Navigation

Search

Categories

On this page

Followup on A simple managed payment card example from Kim Cameron
Smartcards and Federated Identity.
Microsoft Employees Get Carded
InfoCard demo at Burton Catalyst, San Diego
Kim clears the confusions regarding InfoCard GUI in Indigo
RE: Incremental new technology is required
InfoCard System in Indigo
Identity metasystem whitepaper at MSDN - Confusion ?
Axalto iClient Technology package 1.0 - Earned interoperability certification at May 2005 Liberty conformance event
SUN and Microsoft join hands for the inter-operability of Liberty and WS-Federation
WSE502 : Cannot find the target element
Writing a generic SoapClient using WSE
Welcome Marc

Archive

Blogroll

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

RSS 2.0 | Atom 1.0 | CDF

Send mail to the author(s) E-mail

Sign In
Pick a theme:

 Monday, December 12, 2005
Monday, December 12, 2005 11:30:32 AM (Central Standard Time, UTC-06:00) ( )

A very interesting example from Kim Cameron on the use of InfoCards to send the credit-card number. To make it more interesting and validating the philosophy of InfoCard system being user centric and not PC centric and its extensibility I can give one more scenario regarding payment cards. As I wrote in entries here and here InfoCard sees the security device like Smartcard as a personal security token service (PSTS) which can issue security token in form of SAML assertions and so in the picture the identity provider (bank) can be replaced by the Smartcard (actually the bank issued you the Smartcard as its offline representative). Instead of downloading the one time credit card identity token from the user's bank, the InfoCard system request the Smartcard (PSTS) for SAML assertion (security token) which would contain the credit card number (can be one time valid or static), attributes of user such as name, billing address etc. Of course assertion would be digitally signed (XML signature) & encrypted (XML Encryption or SSL) and would be validated by bank once transaction is sent by the shopping site.

You can appreciate that fact that the sensitive data like credit card number, expiration etc is not on your PC but on Smartcard and you avoid a round trip to Identity provider. Smartcard as PSTS not only enable the transactions on PC but also can be used in Kiosk, ATM etc thanks to its mobility aspect. Automation (no need to type the details on web forms), good user experience and security are achieved in this model.

 

Monday, December 12, 2005 4:39:25 AM (Central Standard Time, UTC-06:00) ( )

James McGovern recently asked "How should we think about SmartCards within our own infrastructure and how it plays with federated identity?". I have been talking about the demos we have done with Smartcard in Identity management space but never really talked about the essence of using Smartcards in this domain. I take this oppurtunity to try to explain how Smartcard plays a vital role in federated identity.

Identity federation although new to Internet (www) and world of web services, is not a new concept for the Smartcards. Smartcards are the actually the real enabler of biggest network of identity federations world has known till date i.e GSM. It is this small computer which enables the roaming in the GSM network and let us make use of our mobile phones at places where our operators do not have presence. GSM was devised with the core objective of business harmonization - "you can use my network even though your are a subscriber of another network in another country" which required technical harmonization. Problem is that network 1 does not have an account for you and cannot bill you but they can get your and your operator's (network 2) identity from the phone and ask your operator if they will pay the charges. Of course the operator would want a strong proof of if you are you and not somebody who has stolen your account number. Need is to have a strong authentication for eg using shared key cryptographic where there are exactly 2 copies of secret key - one residing in mobile phone and other at operator's end. The figure below illustrate how a basic GSM authentication is done (it is actually more complicated but for simplicity I am giving this example) :

 

Basically the user's network sends a random number and result after its encryption with shared key to the visiting network and says that if user's phone gives the same encryption result for the random number I will pay the bill. As you can see there is not only a requirement of strong authenitcation but secure storage of shared key (not even accessible to user) and what better technology to use than Smartcard which has the secure, tamper resistant hardware and secure computing capabilities. Computing capabilities are equally important as it is of no use storing the key in Smartcard and giving it to phone for performing cryptographic operation.

Now federated identity for intrenet and intratnet are no different conceptually than the case that I presented. Only the protocols (SAML, WS-Trust etc) used by service providers and identity providers on www are different for obvious reasons. In today's internet the identity of user is of prime interest both to user and to the service provider and hence the need of Strong authentication.

Fortunately various standards like SAML, Liberty, InfoCard/WS-Trust, WS-Federation etc for identity federation respect and understand the usefulness of security devices like Smartcards. All these standards propose the solution to same set of problems in _almost_ same way and differ mostly in wire protocols used. SAML and Liberty has a profiles ECP (Enhanced client proxy) and LECP (Liberty enabled client or proxy) respectively which enables a Smartcard based authentication where as InfoCard (a profile of WS-Trust) treats Smartcard as another Security token service which can generate self issued security tokens.

Other than Strong authentication, secure storage of attributes/credentials and computing capability, mobile nature of Smartcards is an added advantage for user.

 Friday, October 28, 2005
Friday, October 28, 2005 8:53:14 AM (Central Standard Time, UTC-06:00) ( )

Microsoft is betting big on smart cards for its own employees while working to make the technology more palatable for the masses.

Read the full article  by Karen Epper Hoffman at http://redmondmag.com

 Friday, July 15, 2005
Friday, July 15, 2005 9:22:02 PM (Central Standard Time, UTC-06:00) ( )

This week in San Diego we showcased the InfoCard and WS-Trust support by .NET Smartcard which basically hosts the Security Token Service (STS) . This STS generates the RSTR (Request Security token response) with signed SAML Assertion message in response to a RST (Request security token) message [Basic WS-Trust protocol for exchanging security tokens].

Normally as we all know that InfoCard system is part of Avalon/Indigo SDK BETA release (require .NET 2.0) and supports only self issued identity cards but for this demo we created a InfoCard System on .NET 1.1 and used WSE 2.0 SP2 to communicate to the STS hosted in Smart card.

Actually last year at Burton Catayst we did a similar kind of demo which showed hosting WS-Trust STS on Smartcard and implemented active profile of WS-Federation. In this demo we showed how user's identity can be secured stored and managed by Smartcard and can be used by InfoCard System on PC.

Below are some snapshots of the sample application and InfoCard selector GUI on .NET 1.1

1. Smart client application. [ A Service locator ]

 

2. Authenticate to Smart card.

 

3. Lookup for Service

 

4. Select a service

 

5. InfoCard Selector GUI (created by us, not same as that in Indigo)

 

6. Select the InfoCard. This GUI locates the InfoCard [Please note here it is the metadata] and show only the non-geeky part :). Data (user attributes) are in Smartcard.

 

 

7. Clicking on Show Details retrieve the data stored (corresponding to supported claims in InfoCard selected) in the Smartcard.

 

8. Clicking on submit sends to STS (in Smartcard) an RST and gets RSTR. Client application extracts the SAML Assertion from RSTR, embeddeds in the Soap Request to http://www.dotnetcard.com/Demos/InfoCard/wstrust-rp1/BlueMonkey.aspx.

 

 Friday, July 08, 2005
Friday, July 08, 2005 9:14:42 AM (Central Standard Time, UTC-06:00) ( )

Thanks to Kim's explanation finally I have a clear understanding of how the InfoCard selection mechanism (GUI) will work.

In my blog here I was saying that what is displayed in wireframe GUI that comes with Indigo BETA SDK is an attribute card and not Infocard. My understanding was wrong. He corrects me here

“Well, the question is, does the user have to know about the metadata connecting the InfoCard to the Identity Provider?  I don't think so.  Therefore we "dereference" the metadata and show the underlying identity information.  Developers might find this confusing at first, but what do developers like better than a level of indirection????

Here's our thinking.  The InfoCards contain "metadata" just as Kapil says.  But when a user looks at an InfoCard, we don't show her the metadata (which would be meaningless to her).  Instead, we use the metadata to procure a token, and show the information the identity provider is capable of releasing (in other words the set of claims that go along with that identity). “

So, what is displayed is a portion of InfoCard i.e set of claims supported by STS (whose representive this InfoCard is).

But in wirefram GUI I am able to see the attributes (data) which I can also edit, it goes against the notion that InfoCard is just a metadata.

Trevor Lawrence throws a light on this as a comment in Kim's blog.

“It looks at the moment as if the InfoCard UI has a special case built in to allow you to edit your claims in the self-asserted IP that is included. In general, as I understand it, out-of-band mechanisms are likely to be needed to change the claim data that an external IP asserts for a user. (In an authoritive IP I can't just change my passport number without by some other means proving to this IP that that indeed is the number of a new passport issued to me.) “

Now this makes everything clear. What is displayed are supported claims in InfoCard (minus the geekey part) and if these claims reside on user's machine (PC as a local identity provider) then you can edit and see the claims else you need an out of band mechanism to do that. Mostly knowing that these are claims [not data] (displayed in wireframe GUI) which will be transmitted by my IDP to relying party should be enough.

Many thanks to Kim and Trevor for insight.

Friday, July 08, 2005 8:43:11 AM (Central Standard Time, UTC-06:00) ( )

Kim answers my question on confusion regarding Identity metasystem architecture here.

My question was how Liberty based systems which use different protocol (other than WS-Trust) to exchange security tokens would be suppoed in Identity metasystem (mostly to take advantage of InfoCard system Microsoft has put in place).

Kim points out the problem is not only for Liberty enabled providers but for existing islands of identity systems if they want to use the metasystem.

“The truth is, to get to a metasystem, it wouldn't only be Liberty or SAML implementors who would have add the token exchange capability -changes would be required in all the systems asserting corporate and government identities;  in operating systems, mobile devices, online services, smartcards; and in every other technology mentioned in our whitepaper.  No one, including Microsoft, has WS-Trust rolled out at this point in time, so everyone would have to take the plunge.”

This is exactly true.

As a solution to this he proposes

“I was really trying to point out that everything SAML users and vendors already had in place could continue to work just as it does now, while with a small incremental effort their systems could embrace the metasystem.  Sure, it would mean supporting WS-Trust - a protocol designed for metasystem purposes:  exchanging one security token for another different security token.  But the people who've built SAML systems will have little difficulty going this extra step. “

So basically the problem can be approached in 2 ways.

  •  Liberty or SAML systems move to WS-Trust protocol completely (which I do not think they will do) or
  •  Liberty or SAML systems add translators (protocol translators WS-Trust to SAML Request and vice versa) at the server side.

 

 Wednesday, July 06, 2005
Wednesday, July 06, 2005 4:41:16 PM (Central Standard Time, UTC-06:00) ( )

There is a nice blog from Andy Harjanto on InfoCard System so do not want to explan here the basic concepts. He has done a great job describing with some sample code all the elements of InfoCard system.

I was recently playing with the Avalon and Indigo BETA SDK to see the InfoCard systems in action. There is something which may be confusing (seems like today I am going to talk only about confusions :) ) to some people. With Indigo comes a Windows service called Microsoft Digital Identity service (InfoCard system) which displays a GUI where you could create sets of attributes. These sets are called “Cards”. Lot of people will take this to be “InfoCards”.

An InfoCard is just a metadata which says what is the authentication mechanism to be used at STS .. what are supported claims at STS etc. It does not contain the data or attributes about user. 

Microsoft InfoCard 1.0 Beta 1 GUI displays digital identities of user and not the Info cards. Wish there is a better word MSFT can use for these set of attributes instead of “Cards” to avoid possible confusion.

Now this also raises a question, the GUI from Digital Identities service is for selecting a set of attributes not info cards (if my understanding is correct) so will there be a selection mechanism for InfoCards also ?.... A use case can be imagined in which I have 2 InfoCards (for eg 2 authentication mechanisms) for the same relying party then client on my PC should know of a way to select the correct InfoCard.

Wednesday, July 06, 2005 4:13:43 PM (Central Standard Time, UTC-06:00) ( )

From Identity metasystem whitepaper at MSDN

“Participants in the identity metasystem can include anyone or anything that uses, participates in, or relies upon identities in any way, including, but not limited to existing identity systems, corporate identities, government identities, Liberty federations, operating systems, mobile devices, online services, and smartcards. Again, the possibilities are only limited by innovators' imaginations.”

Identity Metasystem Architectural Diagram

 

Going by this diagram which is based on WS-Trust as a request/response protocol for security tokens I do not understand how this architecture of Identity metasystem connects different participants as mentioned in statement above.

If I have a Liberty ID-FF or SAML 2.0 enabled IDP which use SAMLRequest and SAMLResponse for security tokens this architecture does not help.

My understanding is that this identity meta system is for service providers, identity providers and client machines (infocard system) which are based on WS-Trust and so saying that other participants such as Liberty could participate in this meta system may not be correct.

If some one could clarify ?

Wednesday, July 06, 2005 3:26:07 PM (Central Standard Time, UTC-06:00) ( )

Blogging after a long time ... have been busy working on new versions of .NET Smart card.

In May I participated in Liberty conformance event in New Jersey and successfully interoperated our Smart card solution which consists of ID-FF 1.2 LECP profile and ID-WSF 1.1 LUAD-WSC with other vendors and got the certification.

Here is a link to the press release.

http://www.projectliberty.org/press/details.php?item_id=115

From the release:

At the test event hosted by the IEEE Industry Standards and Technology Organization (IEEE-ISTO) and held in Piscataway, New Jersey, during the week of May 9-13, 2005, the following products and services demonstrated conformance with the Liberty Alliance Identity Federation Framework version 1.1 and 1.2 (ID-FF1.1 and ID-FF1.2), and the Liberty Alliance Web Services Framework version 1.0 and 1.1 (ID-WSF 1.0 and ID-WSF 1.1):


Axalto –Axalto’s robust iClient 1.0 technology package is a set of client components and a programmable smart card that supports the Liberty ID-FF 1.2 Liberty Enabled Client Profile (LECP) and Liberty ID-WSF 1.1 Liberty User Agent or Device (LUAD) WSC profiles. By supporting the LECP profile and acting as a LUAD-WSC, the Axalto iClient allows support for secure and mobile usage of user credentials using smart cards.

 Sunday, May 15, 2005
Sunday, May 15, 2005 5:43:39 PM (Central Standard Time, UTC-06:00) ( )

I have been waiting and knew this would happen and is definitely a good thing to happen. I have been working with the both specifications and in spirituality they are the same and differ mostly at schema level, after all there can not be many ways to solve the same problem.

Kudos to SUN and MSFT to come together and have industry march towards better inter-operable solutions.

Following are the links where the initial drafts of the specifications can be found

http://msdn.microsoft.com/library/en-us/dnglobspec/html/websso.pdf

An interoperability profile for Liberty ID-FF1.2 and WS-Federation Passive: this document is a profile of WSSOMEX that allows using either Liberty's ID-FF 1.2 (browser POST profile) or WS-Federation Passive Requestor Interoperability Profile to interact with a service.

http://msdn.microsoft.com/library/en-us/dnglobspec/html/websso-mex.pdf

A web single sign-on metadata exchange protocol (WSSOMEX) that defines a mechanism whereby a Service Provider can determine the protocol suites supported by a client's Identity Provider and use a commonly supported protocol suite to perform SSO-based operations. Simply put, this protocol lets a Service Provider ask "what protocol suites do you speak?" to an Identity Provider.

 Tuesday, March 15, 2005
Tuesday, March 15, 2005 9:49:38 AM (Central Standard Time, UTC-06:00) ( )
I do not know if anybody else have got this exception but I did and am stuck in such a way that I may have to leave all the benefits of WSE just for the workaround to this problem/exception.

So here is the problem,

I am receiving a SoapMessage which has some custom soap headers and these headers are signed using X509Security token (WSS). SoapInputFilter of WSE is processing these headers and throws exception with message WSE502: Cannot find target element referenced by URI "msgHdr". When I look into the SoapMessage there is a custom header which has an
attribute by the name of "id" with value "msgHdr". [Please note that "id" has a lowercase "i"]

I investigated more and here are my findings.

WSE is looking for elements which contains the attribute by the local name of "Id" and which has the type ID (xml schema datatype) and then comparing the URI of Refererence element of Signature element to the value of this "Id" attribute. If they match WSE is happy and verify the signature.

Seeing this behavior I thought why WSE is looking for "Id" only, I could have a custom header where I define an attribute which has a name "id" or "itsMyId" which has xml schema type ID. Why would WSE only entertain "Id. ?

I started looking at the OASIS WSS profile (oasis-200401-wss-soap-message-security-1.0)  and found out section 4 has
something which explains the WSE behavior. Section 4 says that since the SoapClients or intermediaries may not know the xml schema of the elements they are processing for signature verification, it would be good if SoapProcessor presume that the element being referenced by Siganture\Reference has an attribute wsu:Id whose type is ID.

I think this is what WSE follows and hence the response.

But .. there is a big but here. WSS talks about wsu:Id as an optimization and helper and it does not exclude the possibility of having "id" or "itsMyId".

Here the SoapClient needs to tell WSE that this is the schema I am using for the Soap message in response and this is the attribute for a given element that should be used while SecurityInputFilter is processing the signature. How to do that ?..... I could not find any way to specify this.
 Thursday, March 10, 2005
Thursday, March 10, 2005 5:39:50 PM (Central Standard Time, UTC-06:00) ( )
A typical SoapClient class looks like this:
 
public class MyClient : SoapClient{
   public MyClient(EndpointReference ref) : base(ref) { }
 
    public SoapEnvelope MyMethod(SoapEnvelope envelope){
        return base.SendRequestResponse("MyServerMethod",envelope);
    }
}
 
The problem of this approach is that it gives you a flexibility of specifying endpointreference but not the SoapAction. Your client could have been talking to many web services and I felt it would have been good to have one client, so I wrote ....
 
public class MyGenericClient : SoapClient{
    private string soapAction;
    public MyClient(string soapAction,EndpointReference ref) : base(ref) {
      this. soapAction = soapAction;
    }
 
    public SoapEnvelope InvokeService(SoapEnvelope envelope){
        return base.SendRequestResponse( soapAction,envelope);
    }
}
 
Pretty easy huh......what I figured out looking into WSE was that if you specify SoapMethod attribute then the value of attribute is considered to be a SoapAction and if you do not then WSE takes the first parameter of SendRequestResponse and put that as the SoapAction.
Thursday, March 10, 2005 5:12:59 PM (Central Standard Time, UTC-06:00) ( )
Marc talbot, my fellow developer at Axalto has also started blogging. He joined us 3 months back in Ausitn for .NET Smartcard development. You will be seeing lot of goodies and tips on the usage of .NET Smartcard and SDK.
 
Marc has worked in sales for a good period of time and our research lab will (actually already) be getting benefits from his experiences with the customers.