1

JavaでWEB SSOサービスプロバイダーを実装しようとしています。Shibboleth ID プロバイダーを使用しています。認証ステップまでは問題なく動作しており、ユーザーのセッション/セット Cookie を正常に作成できます。しかし、シングル サインアウト機能を使用しようとすると、shibboleth IdP から "RequestDenied" 応答が返されます。ログを確認したところ、Inbound message issuer was not authenticated と書かれていました。同じ発行者がログイン ステップで正常に動作していますが、ログアウト ステップでエラーが発生します。更新する構成ファイル、ポインタ、提案はありますか? これは私のログアウト要求です。

<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                     ID="jiojjcjckjaflbedlcjcpcnecigbjhaekalmfkcg"
                     IssueInstant="2014-02-24T23:30:25.257Z"
                     NotOnOrAfter="2014-02-24T23:35:25.257Z"
                     Version="2.0"
                     >
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://localhost/sp/shibboleth</saml:Issuer>
    <saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
                 Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
                 NameQualifier="urn:oasis:names:tc:SAML:2.0:assertion"
                 >rohit</saml:NameID>
    <samlp:SessionIndex/>
</samlp:LogoutRequest>

そして、これは私が応答して得ているものです。

<saml2p:LogoutResponse xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
                       Destination="https://localhost:8091/SSO/consumer"
                       ID="_02a145f4992cb2e11a8fc4aa43a74096"
                       InResponseTo="jiojjcjckjaflbedlcjcpcnecigbjhaekalmfkcg"
                       IssueInstant="2014-02-24T23:30:25.334Z"
                       Version="2.0"
                       >
    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
                  Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity"
                  >https://localhost/shibboleth</saml2:Issuer>
    <saml2p:Status>
        <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Responder">
            <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:RequestDenied" />
        </saml2p:StatusCode>
        <saml2p:StatusMessage>Message did not meet security requirements</saml2p:StatusMessage>
    </saml2p:Status>
</saml2p:LogoutResponse>
4

1 に答える 1

3

SLO プロファイルの必須メッセージ認証という設定がオンになっています。

通常、証明書利用者構成ファイルの下部に設定があります。このように見えるはずです。

<security:SecurityPolicy id="shibboleth.SAML2SLOSecurityPolicy" xsi:type="security:SecurityPolicyType">
    <security:Rule xsi:type="samlsec:Replay"/>
    <security:Rule xsi:type="samlsec:IssueInstant"/>
    <security:Rule xsi:type="samlsec:ProtocolWithXMLSignature" trustEngineRef="shibboleth.SignatureTrustEngine"/>
    <security:Rule xsi:type="samlsec:SAML2HTTPRedirectSimpleSign" trustEngineRef="shibboleth.SignatureTrustEngine"/>
    <security:Rule xsi:type="samlsec:SAML2HTTPPostSimpleSign" trustEngineRef="shibboleth.SignatureTrustEngine"/>
    <security:Rule xsi:type="security:ClientCertAuth" trustEngineRef="shibboleth.CredentialTrustEngine"/>
    <security:Rule xsi:type="samlsec:MandatoryIssuer"/>
    <security:Rule xsi:type="security:MandatoryMessageAuthentication"/>
</security:SecurityPolicy>

必須のメッセージ認証では、メッセージが信頼できるピアから送信されたことを確認する方法をセットアップする必要があります。通常、これは署名されたリクエストで行われます。SP はメタデータに署名し、検証のために証明書を公開できます。Shibboleth は、SP からの証明書を信頼するようにセットアップできます。

これを実現する方法は、メタデータ プロバイダーで次のようなものを使用して、SP のメタデータ フィルターをセットアップすることです。

<metadata:MetadataFilter xsi:type="metadata:SignatureValidation"
                         trustEngineRef="shibboleth.MetadataTrustEngine"
                         requireSignedMetadata="true" />

これは、 と呼ばれる信頼エンジンを参照しますshibboleth.MetadataTrustEngine。信頼エンジンは、署名の検証に使用できます。

信頼エンジンも証明書利用者の構成で定義されているので、探してみてください。デフォルトのセットアップは次のようになります。

<security:TrustEngine id="shibboleth.SignatureTrustEngine" xsi:type="security:SignatureChaining">
    <security:TrustEngine id="shibboleth.SignatureMetadataExplicitKeyTrustEngine" xsi:type="security:MetadataExplicitKeySignature" metadataProviderRef="ShibbolethMetadata"/>
    <security:TrustEngine id="shibboleth.SignatureMetadataPKIXTrustEngine" xsi:type="security:MetadataPKIXSignature" metadataProviderRef="ShibbolethMetadata"/>
</security:TrustEngine>

メタデータ プロバイダーを既定のチェーン メタデータ プロバイダーの一部として定義している場合は、これで十分です。

必要に応じて、コメントアウトしてメッセージ認証ポリシーを無効にすることができます。

<security:Rule xsi:type="security:MandatoryMessageAuthentication"/>
于 2014-04-15T22:03:34.120 に答える