.NET Framework Bookmark and Share   
 index > Claims based access platform (CBA), code-named Geneva > Providing federated identity with Geneva Server and CardSpace
 

Providing federated identity with Geneva Server and CardSpace

“INTRODUCING “GENEVA?whitepaper describes situation when user in enterprise X accesses web application in enterprise Y with identity that matches this application’s requirements.

Here clearly said that Geneva CardSpace would traverse this kind of federation relationship:

0. Application determines which IP-STS it trusts.

1. CardSpace learns application token requirements,

2. Contacts STS in enterprise Y to learn his token requirements.

3. Asks user’s home realm STS to issue token to STS in enterprise Y

4. And finally, STS in enterprise Y, after verifying received token, issues token that allows this user to access the application.

The question is:

1) How to configure my web application so that it notice cardspace which IP-STS he trusts.

2) Does Geneva Server beta 2 support these interactions (according to “?we establish trust-relationship between Geneva Servers in two security realms, but in property window of added IP we have seen no active endpoint, which could receive tokens)?

3) Can Windows CardSpace traverse this kind of federation relationship?

xmv_cryptopro

Establishing a naming convention to refer to the various entities involved.
RP -> Web application in enterprise Y
RP-STS -> STS in enterprise Y
IP-STS -> STS in enterprise X

>0. Application determines which IP-STS it trusts.
This is not true. The RP just says that it needs token from RP-STS. RP does not know about the IP-STS.

As for your questions:
1. The RP just gets configured to receive tokens from RP-STS. It does not need to know about the IP-STS. On the RP-STS's login page the object tag doesn't try to explicitly list what IP-STS to trust. The object tag hardly has any parameters set (like claims, issuer, etc). So any information card on the client's machine would "match" and the user has to choose between them.Ideally the user would know what card to use. Geneva Server and CardSpace provide support via "admin policy" through group policy to auto-select (and auto-use) the correct card so that the user does not have to choose the card. More details here: http://blogs.msdn.com/card/archive/2009/06/09/enterprise-policy-for-zero-click-sign-in-using-information-cards.aspx
2. Yes, Geneva server supports this. You can try the hand-on lab. On the IP-STS, look at the configured "relying party" for the RP-STS. The identifiers for the RP-STS will have the symmetric/asymmetric SAML token endpoints for both trust versions.
3. Yes.In above answersI assumed that the CardSpace's object tagis on the RP-STS login page. But it is also possible to put this on the RP page directly. In this case, the object tag must have the parameters:
- issuer=<actual endpoint of an active SAML WS-Trust endpoint>. For eg: https://sts.enterpriseY.com/Trust/13/IssuedTokenMixedAsymmetricBasic256
- issuerPolicy=<The mex address of the RP-STS>. For eg: https://sts.enterpriseY.com/Trust/Mex


-Rakesh

Rakesh Bilaney - MSFT
Thanks for your answer.

We've get two Geneva Servers. Each one added to another as a relying Party and IdentityProvider. (We follow steps described in "GenevaServerFederatedCollaboration-SBS-Guide.pdf").

In our handmade website there is code which invokes geneva CardSpace:

<idfx:InformationCard
ID="InformationCard1"
runat="server"
DisplayRememberMe="false"
SignInMode="Single"
SignInText="Для входа при помощи инфокарты нажмите здесь"
TitleText="Нажмите здесь"
OnSecurityTokenValidated="InformationCard1_SecurityTokenValidated"
Issuer="http://geneva-tst.samlnew.test/Trust"
issuerPolicy="https://geneva-tst.samlnew.test/Trust/Mex"
RequiredClaims="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
OnSignInError="InformationCard1_SignInError"
VisibleWhenSignedIn="False">
</idfx:InformationCard>

We experimented with setting Issuer to Issuer="https://geneva-tst.samlnew.test/Trust/13/IssuedTokenMixedSymmetricBasic256"but nothing changes.

Issuer and issuerPolicy point to RP-STS. In trace of RP-STSwe have seen request for wsdl (http://schemas.xmlsoap.org/ws/2004/09/transfer/Get). And thats all. No request to the IP-STS.

We have got InfoCard from IP-STS. genevaCardSpace makes it unavailable due to some reasons. May be it filtered by node Issuer (which has value <i:Issuer>
http://geneva.saml.test/Trust
</i:Issuer
>
in the card).

Can you give us some hints on how to make federation works?
xmv_cryptopro
The issuer in the object tag needs to be the actual endpoint address rather than the identifier. Here is what is supposed to happen:
1. CardSpace does MEX exchange with the RP-STS mex address. In the metadata retrieved, it finds multiple endpoints. To choose the endpoint to use, it uses the "issuer" parameter from the object tag. This is why the actual endpoint address is needed. Can you make sure that the issuer address is case-sensitive match to the one in the metadata?
2. On selecting the endpoint in the MEX, CardSpace will get new set of parameters from its policy. In case of GenevaServer, this policy is no issuer/issuerpolicy parametersspecified. As a result, CardSpace then show the selector with all cards as there are no "selection criteria". So the IP-STS card will show as available.
3. When User selects the card, CardSpace will get the token from the IP-STS (the sts details like address, credential info are taken from the card). This token is then submitted to the RP-STS. The RP-STS will then generate a token and retun it back to CardSpace. Finally this token is available from the object tag.

For troubleshooting your case:
1. Go to the site https://geneva-tst.samlnew.test/Trust/Mexinbrowser and get the exact address of the issued token endpoint. Use this in the object tag.
2. If it still fails, send the event logs of CardSpace.
Rakesh Bilaney - MSFT
magnificent!Thanks a lot Rakesh.
Careless mistake: we were using fully qualified domain name:
https://geneva-tst.samlnew.test/Trust/13/IssuedTokenMixedSymmetricBasic256
but wsdl shows that it is:
https://geneva-tst/Trust/13/IssuedTokenMixedSymmetricBasic256

Now, all is well
xmv_cryptopro

Windows CardSpace Geneva works fine.
But predecessorWindowsCardSpace breakes after retrieving metadata from RP-STS, nevertheless there're no changes were made in configuration of website, or geneva server. We just replaced Geneva Cardspace on Windows Cardspace.Message in eventviewer is about wrong policy.

So, Windows CardSpace doesn't support federation relationship ?

xmv_cryptopro

CardSpace in .NET Framework has a restriction of requiring atleast one claim as a "required claim". The RP-STS's issued token endpoint does not specify any claim requirement. This affects CardSpace in .NET Framework which will reject this policy. Note that it supports federation relationships with this requirement.
The RP-STS's issued token endpointdoes not have any claims requirement as:
- The RP-STS can trust multiple IP-STS's (different partners) which could have different claim characteristics.
- The actual information about claims to be used in the token is setup out-of-band when establishing the trust in the Geneva admin MMC (and the client's request has less value).

CardSpace Geneva removes this claim requirement.

Will your STS be internet facing or proxied? In that case, you will have to configure the Geneva Server to use the FQDN.

Rakesh Bilaney - MSFT
Oh, l have already read about this difference between Cardspace version 1 nad 2. But left it out of consideration.

May you help me with understanding federation relationship in another example:

I took sample from geneva Framework Samples: Federation for Web Services;

And modified it so that HomeRealmSTS could issue InforCard, and involve CardSpace by changing binding configurations.

When I run the example WindowsCardSpace offers me to install new information card or sometimes retieves mex from BookStoreSTS and HomeRealmSTS and says: wrong policy;

Here are the settings:

---WebSite:
<idfx:InformationCard
ID="InformationCard1"
runat="server"
DisplayRememberMe="false"
SignInMode="Single"
SignInText="Для входа при помощи инфокарты нажмите здесь"
TitleText="Нажмите здесь"
OnSecurityTokenValidated="InformationCard1_SecurityTokenValidated"
Issuer="https://geneva-tst.samlnew.test/FederationSample/BookStoreSTS/STS.svc"
issuerPolicy="https://geneva-tst.samlnew.test/FederationSample/BookStoreSTS/STS.svc/mex"
RequiredClaims="http://tempuri.org/PurchaseLimitClaim"
OnSignInError="InformationCard1_SignInError">
</idfx:InformationCard>

----BookStoreSTS (like RP-STS):
<bindings>
<ws2007FederationHttpBinding>
<binding name="BookStoreSTSBinding">
<security mode="TransportWithMessageCredential">
<message >
<issuerMetadata address="https://geneva-tst.samlnew.test/HomeRealmSTSplusCard/STS.svc/mex" >
<identity>
<dns value ='HomeRealmSTS.com' />
</identity>
</issuerMetadata>

<claimTypeRequirements>
<add claimType="http://tempuri.org/PurchaseLimitClaim"/>
</claimTypeRequirements>
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>

<endpoint address=""
binding="ws2007FederationHttpBinding"
bindingConfiguration="BookStoreSTSBinding"
contract="Microsoft.IdentityModel.Protocols.WSTrust.IWSTrust13SyncContract" bindingNamespace="http://schemas.microsoft.com/ws/2008/06/identity/securitytokenservice"/>

---HomeRealmSTS (like IP-STS)

<bindings>
<wsHttpBinding>
<binding name="HomeSTSbindingConfig">
<security mode="Message">
</security>
</binding>
</wsHttpBinding>
</bindings>

<endpoint address="" binding="wsHttpBinding" contract="Microsoft.IdentityModel.Protocols.WSTrust.IWSTrust13SyncContract" />



xmv_cryptopro
Can you include the complete event log?
I think it is becuase the <endpoint> configurations don't have identity specified. Can you add a certificate identity for the RP-STS?
Rakesh Bilaney - MSFT

You can use google to search for other answers

Custom Search

More Threads

• Token signing certificate error
• Silverlight libraries
• Windows XP Support
• Geneva Server configuration fails with AddressAccessDeniedException
• Having trouble understanding how claims are verified
• Error MSIS7012 when testing federation with Microsoft Online Services (Int Environment)
• Identity Developer Training Kit - can't open VS solution of Ex1-ClaimsEnableWebSite
• Where will "geneva" service reside
• Maximum lifetime of bootstrap token
• Compairing URI to get certificates from database in GetScope