11

私は非常に単純な SSO (シングル サインオン) プロセスの設計を任されています。私の雇用主は、SAML で実装する必要があると指定しています。SAML仕様に準拠しながら、極力シンプルなメッセージを作成したいと考えています。

私のリクエストとレスポンスのメッセージを見て、私の目的に合っているかどうか、そこにある必要のないものが含まれているかどうか、必要なものが欠けているかどうかを教えてくれる人がいれば、本当に感謝しています。そこにいる必要があります。

さらに、件名に関する追加情報を応答のどこに入力する必要があるかを知りたいです。特に、件名の電子メールアドレス。

相互作用は次のように機能する必要があります。

  1. この時点で、ユーザーはサービス プロバイダーにサービスを要求しますが、サービス プロバイダーはユーザーについて何も知りません。
  2. サービス プロバイダーは、ID プロバイダーからのユーザーの認証を要求します
  3. ユーザーは ID プロバイダーによって認証/登録されます
  4. ID プロバイダーは、認証成功メッセージとユーザーの電子メール アドレスをサービス プロバイダーに返します。

リクエストは次のようにすべきだと思います。

<?xml version="1.0" encoding="UTF-8"?>
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
ID="abc" 
IssueInstant="1970-01-01T00:00:00.000Z" 
Version="2.0"
AssertionConsumerServiceURL="http://www.IdentityProvider.com/loginPage">
   <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
    http://www.serviceprovider.com
    </saml:Issuer>
    <saml:Subject>
        <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">3f7b3dcf-1674-4ecd-92c8-1544f346baf8</saml:NameID>
    </saml:Subject>

私が考えるレスポンスは以下のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://www.serviceprovider.com/desitnationURL" ID="123" IssueInstant="2008-11-21T17:13:42.872Z" Version="2.0">
    <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" Version="2.0">
        <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:profiles:SSO:browser">
                <saml:SubjectConfirmationData InResponseTo="abc"/>
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:AuthnStatement AuthnInstant="2008-11-21T17:13:42.899Z">
            <saml:AuthnContext>
                <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
            </saml:AuthnContext>
        </saml:AuthnStatement>
    </saml:Assertion>
</samlp:Response>

繰り返しになりますが、私の質問は次のとおりです。

  1. これは有効な SAML インタラクションですか?

  2. 要求または応答の XML を単純化できますか?

  3. 件名のメール アドレスは、返信のどこに入力すればよいですか?

本当にありがとうございました。本当にありがとう!

-モーガン

4

2 に答える 2

1
  1. はい、SAML インタラクションのようです

  2. 認証応答はかなり単純になりました。通常、アサーションにさらに属性を追加したいと思うでしょう。セキュリティ上の理由から、少なくとも応答には署名が必要です。

  3. の後に設定されていました。

http://www.ssocircle.comでアカウントを作成し、1 つの HTTP ヘッダー プロファイラー (つまり、クラシックで優れた LiveHttpHeaders) と SAML2 デバッガー ( Feide Rn SAML2 デバッガーに感謝します!) を使用することをお勧めします。リクエスト/レスポンスの流れ...

それが役に立てば幸い、

ルイス

追伸: SP/IdP の完全な実装を見たい場合: http://sourceforge.net/projects/spring-saml/files%2F0.1/

于 2012-05-13T16:18:42.163 に答える