1

Web サイト A から Web サイト B にユーザーをリダイレクトするために SAML 2.0 をどのように使用しますか? ユーザーが Web サイト B でのアクティビティを終了すると、Web サイト B の結果に基づいて Web サイト A に戻り、Web サイト A でさらにアクティビティを続行できるはずです。

また、サービス プロバイダー (SP) と ID プロバイダー (IP) の考え方についても混乱しています。Web サイト A はサービス プロバイダーまたは ID プロバイダーであり、Web サイト B も同様ですか?

私の SAML 2.0 のバックグラウンドは文字通りゼロで、SAML 2.0 アサーションの作成方法を理解するためにドキュメントを読んでいます。これをJavaで実装しようとしています。

SAML 2.0 を理解するための優れた入門書はありますか?

<?xml version="1.0" encoding="UTF-8"?>
-<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Version="2.0" IssueInstant="2013-04-12T15:43:42.389Z" ID="413be1b7-ac2d-4324-a359-998935f11a66">
  -<saml2p:Status><saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/></saml2p:Status>
  -<saml2:Assertion Version="2.0" IssueInstant="2013-04-19T20:16:07.090Z" ID="SamlAssertion-25171a8736ed098dde8659e5ba250b5f" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
   <saml2:Issuer Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">ffx-ffe-w7-15.cgiabccompany.com</saml2:Issuer>
   <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <saml2:Subject><saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" NameQualifier="">test</saml2:NameID>
    <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches"><saml2:NameID>CN=ffx-ffe-w7-15.cgiabccompany.com, OU=ffx, OU=ffe, O=cgifederal, L=Herndon, ST=VA, C=US</saml2:NameID></saml2:SubjectConfirmation>
    </saml2:Subject>
    <saml2:Conditions NotOnOrAfter="2013-04-19T20:21:08.437Z" NotBefore="2013-04-19T20:14:08.437Z"/>
    <saml2:AttributeStatement>
        <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="State Exchange Code"> 
        <saml2:AttributeValue>MD0</saml2:AttributeValue>  
    </saml2:Attribute>               
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="User Type">
    <saml2:AttributeValue>Consumer</saml2:AttributeValue>
    </saml2:Attribute>
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="ABC Company User ID">
    <saml2:AttributeValue>john.doe@email.com</saml2:AttributeValue>
    </saml2:Attribute>
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="Transfer Type">
    <saml2:AttributeValue>Direct Service</saml2:AttributeValue> 
    </saml2:Attribute>        
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="Keep Alive URL">
    <saml2:AttributeValue>https://www.mycompany.com/extendsession.jsp</saml2:AttributeValue>
    </saml2:Attribute>        
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="First Name">
    <saml2:AttributeValue>JOHN</saml2:AttributeValue>
    </saml2:Attribute>
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="Middle Name">
    <saml2:AttributeValue>FISCHER</saml2:AttributeValue>
    </saml2:Attribute>
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="Last Name">
    <saml2:AttributeValue>DOE</saml2:AttributeValue>
    </saml2:Attribute>
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="City Name">
    <saml2:AttributeValue>PEORIA</saml2:AttributeValue>
    </saml2:Attribute>
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="State">
    <saml2:AttributeValue>IL</saml2:AttributeValue>
    </saml2:Attribute>
    <saml2:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" Name="Zip Code">
    <saml2:AttributeValue>20190</saml2:AttributeValue>
    </saml2:Attribute>
 </saml2:AttributeStatement>
 <saml2:AuthnStatement SessionNotOnOrAfter="2013-04-12T15:43:42.328Z" SessionIndex="session#1" AuthnInstant="2013-04-12T15:43:42.328Z"><saml2:SubjectLocality DNSName="2.175.111.190" Address="1234 Fishy LN, PEORIA, IL 20190"/>
   <saml2:AuthnContext>
   <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password   
   </saml2:AuthnContextClassRef>
   </saml2:AuthnContext>
</saml2:AuthnStatement>
</saml2:Assertion>
</saml2p:Response>
4

1 に答える 1

1

この典型的なシナリオは、アーティファクト バインドを使用した SAML WEB SSO です。

  1. Web サイト A (SP) は、ユーザーが認証されたセッションを持っていないことを確認します。
  2. SP は、SAML AutnRequest を URL パラメーターとして使用して、ユーザーを Web サイト B (IDP) にリダイレクトします。
  3. IDP はユーザーを認証し、URL パラメーターのアーティファクトを使用して SP にリダイレクトします。
  4. SP は、IDP への ArtifactResolveRequest を使用して、SOAP を介してアーティファクトをアサーションと交換します。

アサーションは、認証されているユーザーの証拠であり、IDP が保存したユーザーに関する情報を含めることができます。たとえば、uid.

あなたが話しているシナリオでは、Web サイト A は SP であり、Web サイト B は IDP です。SP はユーザーの認証を求めるエンティティであり、IDP (IDentity Provider) は認証を提供するエンティティです。

SAML SSO は、OpenAM Shibboleth などの多くの製品を使用して実現されます。ソフトウェアに SAML を組み込みたい場合は、OpenSAML や Spring SAML モジュールなどのライブラリを使用できます。

私の著書A Guide to OpenSAMLは、SAML と OpenSAML ライブラリの優れた紹介を提供しています。

その他の関連する読み物は、SAML の技術概要と、私のブログのこれらの投稿です。

助けが必要?ブログで質問させてください。多くの助けが必要ですか?採用コンサルタントです。

于 2013-09-14T10:26:07.300 に答える