OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

security-services message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [security-services] Tech Overview outstanding issues


Ummm... just after the Issuer element of the samlp:Response, the example
says:
    <!-- a POSTed response MUST be signed -->

When using the POST binding with the SSO profile, it isn't the
samlp:Response that must be signed.  Per Profiles section 4.1.4.5, it is
the enclosed saml:Assertion that must be signed.

I haven't checked details of the messages yet, but I did catch that one.

Rob Philpott
Senior Technologist
RSA, The Security Division of EMC
Tel: 781-515-7115
Mobile: 617-510-0893
Fax: 781-515-7020
Email: rphilpott@rsa.com


> -----Original Message-----
> From: Tom Scavo [mailto:trscavo@gmail.com]
> Sent: Friday, October 06, 2006 12:04 PM
> To: Eve L. Maler
> Cc: security-services@lists.oasis-open.org
> Subject: Re: [security-services] Tech Overview outstanding issues
> 
> On 9/29/06, Eve L. Maler <Eve.Maler@sun.com> wrote:
> >
> > Tom, thanks for offering a detailed code example!  I think an
> > SP-initiated SSO flow would be most common and most welcome.  I
> > might also reprise it somewhat in the introductory material, unless
> > people think that having two examples for similar stuff that differ
> > only in unimportant details is useful.
> 
> Attached is an SSO flow with hand-crafted example code.  Comments are
> welcome.
> 
> Tom Scavo
> NCSA/University of Illinois
> 
> ------------------------------------------------------
> SAML V2.0 Web Browser SSO Profile
> 
> This is a possible deployment of the SAML V2.0 Web Browser SSO Profile
> where the service provider (SP) and the identity provider (IdP) use
> the HTTP Redirect and HTTP POST bindings, respectively.  The message
> flow begins with a request for a secured resource at the SP.
> 
> 1) Request the target resource at the SP
> 
> The client requests a target resource at the service provider:
> 
>   https://sp.org/myresource
> 
> The service provider performs a security check on behalf of the target
> resource.  If a valid security context at the service provider already
> exists, skip steps 2--7.
> 
> 2) Redirect to the Single Sign-on (SSO) Service at the IdP
> 
> The service provider redirects the client to the Single Sign-on (SSO)
> Service at the identity provider.  A RelayState parameter and a
> SAMLRequest parameter are appended to the redirect URL.  The value of
> the SAMLRequest parameter is a URL-encoded string constructed from the
> following request:
> 
>   <samlp:AuthnRequest
>     xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
>     xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
>     ID="identifier_1"
>     Version="2.0"
>     IssueInstant="2004-12-05T09:21:59Z"
>     AssertionConsumerServiceIndex="1">
>     <saml:Issuer>https://sp.org/SAML2</saml:Issuer>
>     <samlp:NameIDPolicy
>       AllowCreate="true"
>       Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
>   </samlp:AuthnRequest>
> 
> Before the <samlp:AuthnRequest> element is URL-encoded and appended to
> the redirect URL, it is first deflated and base64-encoded (in that
> order).
> 
> 3) Request the SSO Service at the IdP
> 
> The client requests the SSO service at the identity provider:
> 
>
https://idp.org/SAML2/SSO/Redirect?SAMLRequest=request&RelayState=token
> 
> where token is an opaque reference to state information maintained at
> the service provider and request is the encoded <samlp:AuthnRequest>
> element from step 2.  The SSO service processes the AuthnRequest (by
> URL-decoding, base64-decoding and inflating, in that order) and
> performs a security check.  If the user does not have a valid security
> context, the identity provider identifies the user (details omitted).
> 
> 4) Respond with an HTML form
> 
> The SSO service validates the request and responds with a document
> containing an HTML form:
> 
>   <form method="post" action="https://sp.org/SAML2/SSO/POST"; ...>
>     <input type="hidden" name="SAMLResponse" value="response" />
>     <input type="hidden" name="RelayState" value="token" />
>     ...
>     <input type="submit" value="Submit" />
>   </form>
> 
> The value of the RelayState parameter has been preserved from step 3.
> The value of the SAMLResponse parameter is the base64 encoding of the
> following <samlp:Response> element:
> 
>   <samlp:Response
>     xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
>     xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
>     ID="identifier_2"
>     InResponseTo="identifier_1"
>     Version="2.0"
>     IssueInstant="2004-12-05T09:22:05Z"
>     Destination="https://sp.org/SAML2/SSO/POST";>
>     <saml:Issuer>https://idp.org/SAML2</saml:Issuer>
>     <!-- a POSTed response MUST be signed -->
>     <ds:Signature
>       xmlns:ds="http://www.w3.org/2000/09/xmldsig#";>...</ds:Signature>
>     <samlp:Status>
>       <samlp:StatusCode
>         Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
>     </samlp:Status>
>     <saml:Assertion
>       xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
>       ID="identifier_3"
>       Version="2.0"
>       IssueInstant="2004-12-05T09:22:05Z">
>       <saml:Issuer>https://idp.org/SAML2</saml:Issuer>
>       <!-- a Subject element is required -->
>       <saml:Subject>
>         <saml:NameID
>
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">
>           3f7b3dcf-1674-4ecd-92c8-1544f346baf8
>         </saml:NameID>
>         <saml:SubjectConfirmation
>           Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
>           <saml:SubjectConfirmationData
>             InResponseTo="identifier_1"
>             Recipient="https://sp.org/SAML2/SSO/POST";
>             NotOnOrAfter="2004-12-05T09:27:05Z"/>
>         </saml:SubjectConfirmation>
>       </saml:Subject>
>       <saml:Conditions
>         NotBefore="2004-12-05T09:17:05Z"
>         NotOnOrAfter="2004-12-05T09:27:05Z">
>         <saml:AudienceRestriction>
>           <saml:Audience>https://sp.org/SAML2</saml:Audience>
>         </saml:AudienceRestriction>
>       </saml:Conditions>
>       <saml:AuthnStatement
>         AuthnInstant="2004-12-05T09:22:00Z"
>         SessionIndex="identifier_3">
>         <saml:AuthnContext>
>           <saml:AuthnContextClassRef>
> 
> urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
>          </saml:AuthnContextClassRef>
>         </saml:AuthnContext>
>       </saml:AuthnStatement>
>     </saml:Assertion>
>   </samlp:Response>
> 
> 5) Request the Assertion Consumer Service at the SP
> 
> The client issues a POST request to the assertion consumer service at
> the service provider.
> 
> 6) Redirect to the target resource
> 
> The assertion consumer service processes the response, creates a
> security context at the service provider and redirects the client to
> the target resource.
> 
> 7) Request the target resource at the SP again
> 
> The client requests the target resource at the service provider
(again):
> 
>   https://sp.org/myresource
> 
> 8) Respond with requested resource
> 
> Since a security context exists, the service provider returns the
> resource to the client.


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]