Few months ago I stepped in Jaime's office and I pitched to him the idea of a Managed Card writer application, that would leverage his specialty: great user experience via WPF!!! So I took over one of the whiteboards of his office and filled it with hallucinations on cards, tokens, multiple authentication factors and similar amenities; the application would be an editor, offering fields for every parameter that define a managed card. The deal was that he would have taken care of the UI, while I would have dealt with the actual card writing code. Of course, I cheated 🙂 Garrett did most of the work already, I had just to take a dependency and comply to his .INI card descriptor file format.
Naturally the idea was cyclically drowned by the incredible amount of stuff we're dealing with for the upcoming launch, but hey here it is! The user experience is typical of what WPF has to offer (3D mixed with classic controls, expanders...); I'm a kind of server guy lately so I'm not the best judge, however to me it looks like a pretty good example of UX development! Bravo Jaime 🙂
Luckily, it also turned out the application I would have liked (always considering it's an example). Below you can see a screenshot.
Operatively, how to use the application is pretty self explanatory: you fill up the fields (some of them could offer more automation, but that's left as exercise for the reader) and you use the functions in the menu File for generating a card (CRD file) or a card template.
If you're just starting developing for CardSpace, the UI layout can actually help to understand how a card is structured. The expanders (another great idea of Jaime) allow the user to hide the details of the sections not being edited while preserving the awareness of their existence (es: minimizing the STS details will collapse everything in a web service icon, that will stay there to remind of the STS existence in the schema of a managed card).
A similar tool, however, would probably have its best use as editor of card templates. You may have seen another small sample I made, the Workflow Foundation ManagedCardCreatorActivity: that is basically a WF wrapper around Garrett's card writer, in a similar way as the WPF toy does. Issuing a card in the context of a workflow really makes a lot of sense: imagine it as a step of an account credential process, or at the end of a registration wizard. In the typical case, the vast majority of fields emitted by an IP won't change most of the times: the STS will be likely the same for every user, the set of claims that the specific authority can assert about its customers, will be pretty constant, and so on and so forth. The ManagedCardCreatorActivity can be initialized by a card template edited by the WPF Card Writer toy, and the workflow can take care of setting the few card values that are actually dependend from the specific user we're dealing with. So, with some clean up it may even turn out handy 🙂