I (with help from the Cowboy) have been working for the last several weeks on a Firefox extension to implement Windows CardSpace. It's still got a few rough edges, but should work in most cases.
You can download the extension here for now. I'll jump through the hoops over at addons.mozilla.org this week, and hopefully it will be available there soon. I'll post an update when it is there. I've also set up a project over at Codeplex (as mentioned briefly in my first post), and will get the code posted there in the next day or so.
You can test this extension at https://www.xmldap.org/relyingp
There are a few differences between Chuck’s and mine, but the significant one is support around scripting; I’ve made it a priority to have 1:1 features with IE.
For those of you who wandered in and aren't sure what CardSpace is, you may wish to check out Kim Cameron's blog, or go straight to the CardSpace website.
I will post some usage samples shortly, but in this post I'd like to list what is and isn't covered.
Feature List:
- Support for both the <object> and <ic:informationcard> syntax.
- Support for both JavaScript invocation (using xmlToken.value) and <form> posting (both implicit and using form.submit() ).
- Supports object parameters required for the selector . These are scriptable, and most are read/write. I've tried to validate these as much as possible. I'm sure testing will turn up cases I've missed, so I expect this code will need to be updated as items are found. See more details in my post containing samples.
- This should support all certificates that Firefox supports.
- Pluggable identity selector. The extension creates an XPCOM Interface for Identity Selectors, of which I’ve implemented one that calls Windows CardSpace, and the end user can switch between them (right now, you have to change a pref in about:config , but I’ll add in an options dialog soon).
- Error objects should be identical to the IE implementation (for ease of cross-platform web development)
- Uninstalls!
To-do list:
- It currently fails against the CardSpace sandbox. Garrett is pretty sure that this is a problem on the sandbox side, and I sure hope he's right. He's looking into it.
- Testing. I've built this on XP SP2, and tested with FF 1.5 and 2.0. I've also tested from Server 2003. I will continue to test with various setups.
- Cross platform work. This is a Windows implementation. With a Identity Selector on another platform, this may work, but I’ve done no testing yet.
- Make the pluggable Identity Selector switchable from the options dialog.
- Improve security (look for out of domain IFrames, etc)
- Detect for .Net 3.0. Currently it simply fails.
In addition to getting the source code posted and submitting this to Mozilla, I will follow up here with a few more posts. I'll get into the code with you and describe how it all fits together. This is my first extension, so I'm sure there will be opportunity for improvement. Please feel free to send me your comments or suggestions.
Many thanks to some of the Microsoft folks who answered my CardSpace questions, and in particular to the CardSpace Community Program Manager Garrett Serack, who not only pointed me in the right direction when I was stuck, and provided me the sample code to call CardSpace from C++, but also restored my motivation to get it working. Thanks also to the many folks hanging out in the Mozilla #extdev IRC channel. And thanks to Kim Cameron and Chuck Mortimore. While I didn't talk to these gentlemen over the course of writing this, I think I've read everything they've written on this subject.
LINKS:
http://perpetual-motion.com
http://fearthecowboy.com –Garrett Serack’s Blog
http://identityblog.com –Kim Cameron’s blog
http://xmldap.org – Chuck Mortimore’s site
111 Comments:
When you make the code available could you also make the Visual Studio solution files available?
Getting Firefox XPCOM extensions to compile is a real alignment of the planets issue. Unless the full visual studio context is known its a complete misery trying to get something to work.
Nice Job!
I'm having trouble getting this to work on XP SP2 FF2.0. Nothing happens on clicking the Infocard login (xmldap or identityblog). Firebug reports an uncaught exception. I can use CardSpace and the XMLDAP Identity Selectors fine, any ideas?
Thats me above. Just tried on a different machine, again XP SP2 FF2.0 and same problem.
Phil h-b, I completely agree. I thought it was just me trying to jump through the XPCOM hoops. I'll post the solution.
Hmm. Another user ran into a similar problem, Craig. In that instance it was because there was a missing dependency in the debug version. The release version didn't require the dependency, but Firefox held on to the cached dll. That shouldn't be a problem now, though.
Do you want to send me an email, and perhaps we can trouble-shoot this?
Thanks
no .xpi, guess I'll wait, I don't use M$ sites anyway so... G/L though
Hi!
I solved similar problem with WinXP + SP2 and non-working Kevin's extension.
This extension needs WinFX. So, I've opened IE7 and tried to login in Kim's weblog with InfoCard. After that IE7 automatically installed WinFX.
So, Kevin's extension really works but WinFX is required for it.
Great work. Worked first time with no problems on Firefox 2.0.0.1 and Vista Enterprise RTM version.
It differs from IE7 in following:
1. OBJECT can be used more than once (IE7 fails second try)
2. "requiredClaims" property is automated slightly different way:
if you have claims in string array 'claims':
//Firefox style, space separated string expected
obj.requiredClaims = claims.join(" ");
//IE style
for(var i = 0; i < claims.length; i++){
obj.requiredClaims.add(claims[i]);
}
3. "tokenType" assumed to be "urn:oasis:names:tc:SAML:1.0:assertion" if not set (IE7 doesn't restict tokenType if not set)
Great work! Just one note, it crashes Firefox on my machine when I've got an empty optionalclaims element ie.
[PARAM Name="optionalClaims" value=""]
I tried this a while back and couldn't get it to work (I had CardSpace running correctly under IE7, so I had the necessary .Net update installed). I have just tried it again and CardSpace is in fact now being invoked. The problem I am seeing accessing Kim Cameron's site however is that it is saying I need a managed card when Kim's site does not require this (it won't let me select the non-managed InfoCard I have used to log into the site via IE7).
Great stuff - just a few kinks to iron out.
Scott
Clean the air? It is possible. Clean water? It is possible too.
Clean energy? It is possible as well.
My idea is very difficult for understanding. It is not difficult for engineer - mechanic, who knows very good the Pascal's law and even-arm lever.
Please open GOOgle and find metozor and next :
index of metozor.
Overthere is all about idea of main .
example : http://www.nets.pl/~metozor/for_greenpeace.html or
http://www.nets.pl/~metozor/energy_for_everybody.h...
http://www.nets.pl/~metozor/prolog_for_metoz.html
Email this article to a friend.
It is something METOZ about.
http://www.nets.pl/~metozor/prolog_for_metoz.html
http://www.nets.pl/~metozor/not_for_idiot.html
http://www.nets.pl/~metozor/cycle_str.html
http://www.nets.pl/~metozor/work_deflection.html
http://www.metozor.nets.pl/metoz.htm
http://www.nets.pl/~metozor/energy_exper.html
Thanks for understanding.
P.S.
The conception of an energy is discreate one to the same as a imbecility. No one has seen the energy and no one has seen the imbecility. We are able to observe results of the energy and imbecility. At present we have got to few energy because we have got to much imbecility.
Thank you for your time and interest.
People have been passionate about roses since the beginning of time. In fact, it is said that the floors of Cleopatra1’s palace were carpeted with delicate rose petals, and that the wise and knowing Confucius had a 600-book library specifically on how to care for roses.
The rose is a legend on its own. The story goes that during the Roman Empire, there was an incredibly beautiful maiden named Rhodanthe. Her beauty drew many zealous suitors who pursued her relentlessly. Exhausted by their pursuit, Rhodanthe was forced to take refuge from her suitors in the temple of her friend Diana. Unfortunately, Diana became jealous. And when the suitors broke down her temple gates to get near their beloved Rhodanthe, she became angry turning Rhodanthe into a rose and her suitors into thorns.
In Greek legend, the rose was created by Chloris, the Greek goddess of flowers. It was just a lifeless seed of a nymph2 that Chloris found one day in a clearing in the woods. She asked the help of Aphrodite, the goddess of love, who gave her beauty Dionysus, the god of wine, added nectar3 to give her a sweet scent, and the three Graces4 gave her charm, brightness and joy. Then Zephyr, the West Wind, blew away the clouds so that Apollo, the sun god, could shine and made this flower bloom. And so the Rose was born and was immediately crowned the Queen of Flowers.
The first true primary red rose seen in Europe was “Slater’s Crimson China” introduced in 1792 from China, where it had been growing wild in the mountains. Immediately, rose breeders began using it to hybridize5 red roses for cultivation. Ever since, the quest for the perfect red rose has been the Holy Grail6 of rosarians: a fragrant, disease-resistant, long-lasting, long-stemmed, reblooming, perfectly formed rose with a clear non-fading vivid red color. Absolute perfection still hasn’t been attained, and of course never will!
There is a special rose language invented as a secret means of communication between lovers who were not allowed to express their love for one another openly. In the mid 18th century the wife of the British ambassador in Constantinople described this in her letters, which were published after her death. These letters inspired many books on the language of flowers, each describing the secret message hidden in each flower. A red rose bud stands for budding desire an open white rose asks “Will you love me﹖” An open red rose means “I’m full of love and desire,” while an open yellow rose asks “Don’t you love me any more﹖”
同声传译|同声翻译|太阳能真空管|流水线|流水线|流水线|流水线|流水线|流水线|流水线|SEO|SEO|网站优化|网站优化|网站建设|网站推广|流水线|SEO|搜索引擎优化|google优化|排名|google排名
VVqFxj Your blog is great. Articles is interesting!
exhheU Wonderful blog.
bz3j87 Thanks to author.
Nice Article.
Wonderful blog.
Please write anything else!
Thanks to author.
Please write anything else!
Hello all!
Nice Article.
Magnific!
hoiTXv You have a talant! Write more!
t0WcAP Wonderful blog.
tmP2I5 Please write anything else!
Hello all!
21IryE The best blog you have!
FNeUAq Thanks to author.
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Thanks to author.
Wonderful blog.
Please write anything else!
Wonderful blog.
Nice Article.
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Wonderful blog.
45kHwl write more, thanks.
Good job!
Good job!
Good job!
Wonderful blog.
Thanks to author.
Hello all!
Nice Article.
Nice Article.
Wonderful blog.
Thanks to author.
Thanks to author.
Thanks to author.
Wonderful blog.
A flashlight is a case for holding dead batteries.
What is a free gift ? Aren't all gifts free?
Give me ambiguity or give me something else.
Save the whales, collect the whole set
Oops. My brain just hit a bad sector.
What is a free gift ? Aren't all gifts free?
Wonderful blog.
When there's a will, I want to be in it.
Hello all!
Energizer Bunny Arrested! Charged with battery.
Ever notice how fast Windows runs? Neither did I.
A flashlight is a case for holding dead batteries.
640K ought to be enough for anybody. - Bill Gates 81
The gene pool could use a little chlorine.
Suicidal twin kills sister by mistake!
Suicidal twin kills sister by mistake!
Suicidal twin kills sister by mistake!
Calvin, we will not have an anatomically correct snowman!
Good job!
All generalizations are false, including this one.
Ever notice how fast Windows runs? Neither did I.
What is a free gift ? Aren't all gifts free?
Suicidal twin kills sister by mistake!
C++ should have been called B
When there's a will, I want to be in it.
Wonderful blog.
Wonderful blog.
A flashlight is a case for holding dead batteries.
Oops. My brain just hit a bad sector.
Suicidal twin kills sister by mistake!
Good job!
A lot of people mistake a short memory for a clear conscience.
C++ should have been called B
C++ should have been called B
What is a free gift ? Aren't all gifts free?
Suicidal twin kills sister by mistake!
Give me ambiguity or give me something else.
Friends help you move. Real friends help you move bodies
Give me ambiguity or give me something else.
Magnific!
Change is inevitable, except from a vending machine.
Oops. My brain just hit a bad sector.
The gene pool could use a little chlorine.
Suicidal twin kills sister by mistake!
When there's a will, I want to be in it.
Calvin, we will not have an anatomically correct snowman!
Friends help you move. Real friends help you move bodies
Oops. My brain just hit a bad sector.
Ever notice how fast Windows runs? Neither did I.
Calvin, we will not have an anatomically correct snowman!
Good job!
Please write anything else!
Please write anything else!
runescape money runescape gold runescape gold runescape money buy runescape gold buy runescape money runescape money runescape gold wow power leveling wow powerleveling Warcraft Power Leveling Warcraft PowerLeveling buy runescape gold buy runescape money runescape items runescape accounts runescape gp dofus kamas buy dofus kamas Guild Wars Gold buy Guild Wars Gold lotro gold buy lotro gold lotro gold buy lotro gold lotro gold buy lotro gold runescape money runescape power leveling runescape money runescape gold dofus kamas cheap runescape money cheap runescape gold Hellgate Palladium