<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>“Geneva” Team Blog : RP STS</title><link>http://blogs.msdn.com/card/archive/tags/RP+STS/default.aspx</link><description>Tags: RP STS</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>About Relying Party STSs (a.k.a, what is RequireFederatedIdentityProvisioning?)</title><link>http://blogs.msdn.com/card/archive/2007/12/18/about-relying-party-stss-a-k-a-what-is-requirefederatedidentityprovisioning.aspx</link><pubDate>Tue, 18 Dec 2007 06:54:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6794061</guid><dc:creator>CardSpaceBlog</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/card/comments/6794061.aspx</comments><wfw:commentRss>http://blogs.msdn.com/card/commentrss.aspx?PostID=6794061</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;A useful, yet sparsely documented feature of Windows CardSpace is its support for resource side Security Token Services (STSs) &amp;#8211; STSs that are used by relying parties rather than Identity Providers. Vittorio has done an excellent job helping to provide &lt;/font&gt;&lt;a href="http://blogs.msdn.com/vbertocci/archive/2007/09/24/the-resource-sts-r-sts-rp-sts-a-sts-the-other-face-of-token-issuing.aspx"&gt;&lt;font face="Verdana" size="2"&gt;detail on this subject&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;, and I highly recommend people interested in understanding more about what resource STSs are and why they are useful, read his post. In this post I want to fill out some of the technical details. That said, I'll start with a short introduction to the subject with an example I&amp;#8217;ve found particularly helpful.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The canonical CardSpace scenario has a relying party (RP), usually a website, which requires a token from an identity provider (IP). The user selects a card in CardSpace. CardSpace then requests a token from the corresponding identity provider. A token is returned to the CardSpace client, which then sends it to the relying party. Figure 1 shows the RP site, and the IP STS the RP has a relationship with. In the following figures, the line connecting IPs and RPs indicates where explicit relationships exist. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image002%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="112" alt="clip_image002[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image002%5B1%5D_thumb.jpg" width="578" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;Figure 1&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Now, part of the flexibility of CardSpace and the &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms996422.aspx"&gt;&lt;font face="Verdana" size="2"&gt;Identity Metasystem&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;, is that it is trivial for an RP to set up new relationships with multiple IPs, as shown in figure 2.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image004%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="299" alt="clip_image004[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image004%5B1%5D_thumb.jpg" width="571" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;Figure 2&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;What&amp;#8217;s interesting about the case with one RP and multiple IP&amp;#8217;s is that the RP site maintains the logic about how to authenticate the various IPs, and potentially has logic to understand the different claims the IPs release (for example one IP could release the claims &amp;#8216;first name&amp;#8217; and &amp;#8216;last name&amp;#8217;, and another &amp;#8216;full name&amp;#8217;. The RP needs to know how to normalize these into values it understands). Additionally, if the different IPs creates tokens in different formats, the RP needs to know how to understand each of these formats. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;This is fine, and a good way for an RP to be able to work with multiple IPs. Now say the RP is part of an organization that needs publish more than one website or web services. Each site needs to duplicate the logic for understanding how to communicate with multiple IPs (show in figure 3)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image006%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="363" alt="clip_image006[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image006%5B1%5D_thumb.jpg" width="557" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;Figure 3&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Clearly for RPs with many sites and many partners, this can become unwieldy. It can be a lot of relationships that need to be maintained in multiple locations. A standard solution to this complexity is for the RP to also run an STS. The relying party&amp;#8217;s STS maintains all of the logic around communication with the various IPs, and produces a consistent token format. The other RP sites can then request a token from the RP STS, and only need be able to process this token (figure 4).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image008%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="346" alt="clip_image008[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image008%5B1%5D_thumb.jpg" width="527" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;Figure 4&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;RP STSs are not for everyone, but can be a big simplification for complex deployments.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;STSs are just specialized web services, so expose policy about how to connect to them, including security requirements. The security requirements may state that issued token is required from another RP STS; this can create a chain of STSs. In the browser scenarios CardSpace automatically follows the RP STS chain, contacting the correct STSs, resolving their policy and continuing to the next STS. In the case of a Windows Communication Foundation (WCF) application, the policy chain can be resolved from a configuration file, but CardSpace itself doesn&amp;#8217;t resolve the policy chain (the underlying difference here is a call to CardSpace&amp;#8217;s &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702769.aspx"&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;GetBrowserToken()&lt;/font&gt;&lt;/i&gt;&lt;/a&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;i&gt; &lt;/i&gt;API or &lt;/font&gt;&lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702725.aspx"&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;GetToken()&lt;/font&gt;&lt;/i&gt;&lt;/a&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;i&gt; &lt;/i&gt;APIs).&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image010%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="126" alt="clip_image010[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image010%5B1%5D_thumb.jpg" width="629" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;Figure 5&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The policy chain can be longer than just a single RP STS, as shown in Figure 5. In this example, the RP Site would specify the requirements of the token it requires from RP STS 1; this would include required claims, STS endpoint URL, and STS metadata exchange policy (MEX) endpoint. Similarly, RP STS 1; would specify the requirements of the token it requires from RP STS 2. RP STS 2 would then specify the requirements for the token it needs. Since the token comes from an IP STS, the only required information is a least one required claim; the details about how to the IP STS can be retrieved from the card the user selects. However, RP STS 2 may also specify an issuer, so only cards from the desired issuer are user selectable.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Of course, the more STSs in the chain, the more processing time is required to request all of the tokens. This delay will be noticed as CardSpace starts (chasing the policy chain) and when it closes (retrieving the tokens). During these delays, the user sees the CardSpace progress page (figure 6).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image012%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="393" alt="clip_image012[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image012%5B1%5D_thumb.jpg" width="540" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;Figure 6&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;To get CardSpace to follow an STS chain, it needs to be given the STS endpoint and MEX policy endpoint of the RP STS, as well as the claims that are being requested from the RP STS. This can be done from a web site by using the x-informationCard object tag. The &lt;i&gt;issuer&lt;/i&gt; param is used to specify the STS endpoint, &lt;i&gt;issuerPolicy&lt;/i&gt; specifies the MEX policy endpoint. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image014%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="69" alt="clip_image014[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image014%5B1%5D_thumb.jpg" width="597" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;CardSpace will retrieve the policy from the &lt;i&gt;issuerPolicy &lt;/i&gt;URL. Since a MEX policy can define policy for multiple STSs, the &lt;i&gt;issuer &lt;/i&gt;URL must match one. The policy for the RP STS is then used to decide what to do next. If it is an IssuedToken request that can be satisfied by a self issued or managed card, CardSpace shows the user her cards, and the usual user interaction begins. One interesting point to note; the policy from the RP STS, not the RP site, is used for card selection. This makes sense, because the token returned by the IP STS must satisfy the RP STS requirements and the token from the RP STS satisfies the requirements of the RP website.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The steps in a CardSpace interaction with an RP website, RP STS and IP STS, are listed below, and shown in figure 7.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;1) The user goes to the RP website&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;2) Token requirements are returned via the x-informationCard object tag&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;3) CardSpace queries for policy from the RP STS&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;4) Policy is returned from the RP STS&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;5) The user selects a card that matches the RP STS policy&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;6) CardSpace makes a request for a token from the IP STS (RST)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;7) The token is returned from the IP STS to CardSpace (RSTR)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;8) Using the token from the IP STS, makes a request for a token from the RP STS (RST)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;9) A token is returned to CardSpace (RSTR)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;10) CardSpace returns the token to the site&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image016%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image016%5B1%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="472" alt="clip_image016[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image016%5B1%5D_thumb.jpg" width="621" border="0" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;Figure 7&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;For an example that you can try, check out the &lt;/font&gt;&lt;a href="https://relyingparty.federatedidentity.net/ageSTSRP/Login.aspx?ReturnUrl=%2fageSTSRP%2fDefault.aspx"&gt;&lt;font face="Verdana" size="2"&gt;age sts&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; at Identity Lab. The page requests the claim &amp;#8216;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/age&amp;#8217; (this is just a made up claim URI and not defined anywhere) from an RP STS; that is, the age STS. The age STS requests a self-issued card with the claim &amp;#8216;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/DateOfBirth&amp;#8217;. When a user goes to the page, she needs to submit a self-issued card, which contains a &amp;#8216;Date of Birth&amp;#8217; claim. This is sent to the age STS, which calculates age and creates a new token, which is returned to the web site. The web site then shows the claim values it has received, in this case, the age. In this scenario, the age STS is playing the role of a claim transformer, as described in the &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms996422.aspx"&gt;&lt;font face="Verdana" size="2"&gt;Identity Metasystem&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;As previously stated, the RP STS&amp;#8217;s policy is used for card matching. Similarly, if the RP STS requests a PPID, it is the RP STS certificate that is used for calculating the PPID, not the certificate of the RP site. This is so a single RP STS can service multiple sites, but always gets the same PPID for a given user from CardSpace.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The certificate information CardSpace shows the user is that of the RP site, even though the policy is used from the RP STS. This may seem somewhat contradictory, however since the RP site is truly the site the user is visiting; the user needs to make a trust decision about it. If the site chooses to use a RP STS, this is more an implementation detail, and by choosing to trust the RP site, the user indirectly trusts the services that site chooses to use. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;In addition to the RP site cert getting shown in CardSpace, it is also used to track card usage history. So if a card is used at two different RP sites that rely on the same RP STS, two separate entries will be created in the card history.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The astute reader may notice I&amp;#8217;ve only handled cases where the RP site and RP STS have a certificate, and may wonder what would happen if the RP web site uses HTTP, which now works with &lt;/font&gt;&lt;a href="http://blogs.msdn.com/card/archive/2007/09/25/deploy-cardspace-on-your-site-without-a-ssl-certificate.aspx"&gt;&lt;font face="Verdana" size="2"&gt;CardSpace&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;. The answer is the RP site and RP STS must both have certificates. The support of HTTP only sites was made to help smaller sites that may not have much in the way of security requirements, but still want to use CardSpace. However, the RP STS support is targeted at sites and organizations which have more complex scenarios, for whom the procuring a certificate and using HTTPS for additional security is likely to already be a security requirement.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;For the actual STS endpoints HTTPS (transport) is not required, however the binding the STS uses must have a certificate. This could be provided by transport or &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733137.aspx"&gt;&lt;font face="Verdana" size="2"&gt;message security&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;. The examples in this post use message security for the STS endpoints, which is why the STS URLs start with HTTP, yet they still have certificates associated with them.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Ok, now for a quick quiz.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Say there is an RP website that contains the below object tag.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image018%5B1%5D.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="86" alt="clip_image018[1]" src="http://blogs.msdn.com/blogfiles/card/WindowsLiveWriter/Abo.awhatisRequireFederatedIdentityProvi_8F88/clip_image018%5B1%5D_thumb.jpg" width="637" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;And the policy at the MEX endpoint, &amp;#8216;https://ipsts.federatedidentity.net/sts.svc/mex&amp;#8217;, declares a requirement for a token with the issuer &amp;#8216;http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self&amp;#8217; and claim &amp;#8216;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname&amp;#8217; and &amp;#8216;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname&amp;#8217;. That is, the STS is requesting a token from a self-issued card that contains a first and last name. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;How is the resulting flow best described?&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;a) &lt;b&gt;The website is requesting a token from an RP STS&lt;/b&gt;. The RP STS is requesting a token from a self-issued card. So the user will see CardSpace UI open and will get to pick which self-issued card to use. The self-issued token is then sent to the RP STS, which generates a token that is sent to the RP web site.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;b) &lt;b&gt;The website is requesting a token from an IP STS&lt;/b&gt;. CardSpace opens and the user selects the managed card whose issuer is &amp;#8216;http://ipsts.federatedidentity.net/sts.svc&amp;#8217;. Authentication to the IP STS is done with a self-issued card, so on selection of the managed card CardSpace automatically sends the token generated by the correct self-issued card to the IP STS. The token from the IP STS is then sent to the RP site.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;b&gt;c) &lt;/b&gt;&lt;b&gt;Not enough information.&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;This really was kind of a trick question. The right answer is c) not enough information. It may be tempting to say a) since a MEX endpoint is defined in the object tag. However, IP STSs have MEX endpoints as well, it just isn&amp;#8217;t necessary to include them in the object tag for IP STSs, since the MEX endpoint is also defined in the managed card. So the presence of a MEX endpoint in the object tag is only required when using an RP STS, but does not guarantee that an RP STS is being referred to. If you think about it, it would seem strange for the RP site to be the one dictating if the next STS in the chain is an IP STS or RP STS; that decision should authoritatively be made and expressed by the STS itself. Still, it is probably good practice not to specify the MEX endpoint (&lt;i&gt;issuerPolicy&lt;/i&gt;) for an IP STS, since the MEX call will need to be made again anyway when the managed card is used, and just calling once will be faster. Also, not including the MEX endpoint makes it so the RP site won&amp;#8217;t be affected if the MEX URL changes for any reason.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;That leaves the obvious question. If there wasn&amp;#8217;t enough information, what other information is needed? The answer lies in the MEX policy of the STS. If it is an IP STS, it will have the element &lt;font color="#000080"&gt;&lt;strong&gt;&amp;lt;&lt;font color="#ff0000"&gt;ic:RequireFederatedIdentityProvisioning xmlns:ic&lt;/font&gt;=&amp;#8221;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana" color="#000040" size="2"&gt;&lt;strong&gt;http://schemas.xmlsoap.org/ws/2005/05/identity&lt;/strong&gt;&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;&lt;font color="#000080"&gt;&lt;strong&gt;&amp;#8221; /&amp;gt;&lt;/strong&gt;&lt;/font&gt; in its policy. The following description of RequireFederatiedIdentityProvisioning appears in &lt;/font&gt;&lt;a href="http://download.microsoft.com/download/1/1/a/11ac6505-e4c0-4e05-987c-6f1d31855cd2/Identity-Selector-Interop-Profile-v1.pdf"&gt;&lt;i&gt;&lt;font face="Verdana" size="2"&gt;Identity Selector Interoperability Profile V1.0&lt;/font&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Verdana" size="2"&gt;This element indicates a requirement that one or more information cards, representing identities that can be federated, must be pre-provisioned before token requests can be made to the identity provider.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;In other words, the element is placed at federation boundaries. When crossing a trust boundary it makes sense that a user interaction may occur, and cards are great way for the user to be involved. Back in figure 4, the box drawn with the dashed line represents a trust boundary around the RP. All sites and STSs in the boundary often don&amp;#8217;t require user interaction when communicating with each other, since all tokens passed around are within an organization. Also since it is between parties in the same organization, there should not be any privacy concerns. However, as soon as the boundary is hit, as in the case of federation, it makes sense for the user to be prompted. Note, in most cases this boundary will be between organizations, but it could even be in an organization if the information being passed is not already freely shared between the group running the RP STS and RP site. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;This element was described in a fairly straightforward scenario, but it is actually required to resolve ambiguities in many cases, such as in the case that a web service is accessed by an application using the WCF stack, the stack needs to have a way to know if CardSpace should be invoked. The credential required to authenticate to the final STS in a chain can be collected in other ways than just CardSpace, such as when the credentials of the currently logged in user are used, or the user is prompted directly for username and password through some custom application. If the RequireFederatedIdentityProvisioning element is in the last policy in a policy chain (or one from the last), CardSpace will be called. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;WCF developers may be wondering how to set RequireFederatedIdentityProvisioning in policy, from config. It is done by using the &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms788981.aspx"&gt;&lt;font face="Verdana" size="2"&gt;&amp;lt;useManagedPresentation&amp;gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; binding element.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="Verdana" size="2"&gt;In Summary&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Hopefully this provides a good reference for people interested in understanding RP STS. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;I&amp;#8217;ve tried to give a quick explanation of what a RP STS is, as well as a case in which it may be used. I think some of the key take-away points are:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;1) CardSpace also works with RP STSs, which consume the tokens represented by cards.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;2) There can be multiple RP STSs in a chain.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;3) CardSpace must be given the MEX endpoint URL of an RP STS, either from the WCF app config or from the &lt;i&gt;issuerPolicy &lt;/i&gt;element in the x-informationCard object tag for browser applications.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;4) Each RP STS needs a certificate, and the web site making the initial request must use HTTPS.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;5) &amp;lt;RequireFederatedIdentityProvisioning&amp;gt; is the hint to CardSpace that an STS is an IP STS &amp;#8211; not an RP STS.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Please let me know if you have any questions, or can think of any CardSpace topics that could use some more documentation.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Thanks,&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Caleb&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6794061" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/card/archive/tags/CardSpace/default.aspx">CardSpace</category><category domain="http://blogs.msdn.com/card/archive/tags/RP+STS/default.aspx">RP STS</category><category domain="http://blogs.msdn.com/card/archive/tags/useManagedPresentation/default.aspx">useManagedPresentation</category><category domain="http://blogs.msdn.com/card/archive/tags/RequireFederatedIdentityProvisioning/default.aspx">RequireFederatedIdentityProvisioning</category></item></channel></rss>