2

ADFS サーバーを IdP として使用しています。私は別のSPアプリケーションを持っています。これらは信頼の輪で定義されます。SSO over SAML プロトコルは正常に機能しています。SP によって開始されたログアウト要求を試行すると、ADFS 側でエラーが発生しました。

MSIS7000: サインイン要求は、Web ブラウザー クライアントの WS-Federation 言語または SAML 2.0 プロトコル WebSSO プロファイルに準拠していません。

編集ADFS イベント トレースからの詳細メッセージ:

MSIS7015: この要求には、予期されたプロトコル メッセージが含まれていないか、HTTP SAML プロトコル バインディングに従って、正しくないプロトコル パラメーターが見つかりました。

mu log out SAML メッセージを確認したところ、正しいようです。同じ SP が ForgeRocks IdP (ex Sun OpenSSO) で適切にログアウトしていることに言及してください。

Saml loout リクエスト メッセージ:

<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                 ID="b00b3f55-f3e3-4935-9e91-da6bf8b62efd"
                 Version="2.0"
                 IssueInstant="2013-08-27T09:45:08Z"
                 Destination="https://00.00.00.00/adfs/ls/"
                 Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
                 NotOnOrAfter="2013-08-27T09:50:08Z"
                 >
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">SPEntityId/</saml:Issuer>                    
<saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">jsmith@company.com</saml:NameID>
<samlp:SessionIndex>_ea853497-c58a-408a-bc23-c849752d9741</samlp:SessionIndex>

編集

Lan は、ログアウト要求メッセージの署名が必須であることを私に提案しました。彼は正しかったです。OASIS 仕様 ( http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf ) セクション 4.4.3.1。と記載されています。それによると、署名済みのメッセージを送信していますが、同じ問題が発生しています。

署名されたメッセージ:

<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                 ID="aed640c0-9455-49ea-9450-4ad7c08d98e7"
                 Version="2.0"
                 IssueInstant="2013-08-29T15:22:45Z"
                 Destination="https://server/adfs/ls/"
                 Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
                 NotOnOrAfter="2013-08-29T03:27:45Z"
                 >
<saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
             Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">user</saml:NameID>
<samlp:SessionIndex>_677952a2-7fb3-4e7a-b439-326366e677db</samlp:SessionIndex>
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">SPIssuer</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
        <Reference URI="#aed640c0-9455-49ea-9450-4ad7c08d98e7">
            <Transforms>
                <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
            </Transforms>
            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <DigestValue>53jjPvQ2Ty1Z+VikwrUwW4Erj3k=</DigestValue>
        </Reference>
    </SignedInfo>
    <SignatureValue>signed value</SignatureValue>
    <KeyInfo>
        <X509Data>
            <X509Certificate>certificate</X509Certificate>
        </X509Data>
    </KeyInfo>
</Signature>

私が間違っていることは何ですか?ADFS で他のエンドポイントを指定する必要がありますか? 私が得たように、サインオン要求と同じように使用する必要があります(私の側では完全に機能しています)。

ありがとう、ラストコ

4

2 に答える 2