2016-08-19 11 views
1

私はTestShibPython Social Auth SAML backendを使用して、Djangoアプリケーションでサービスプロバイダを実装しています。SAMLサービスプロバイダはIDPメタデータ情報とどのように一致しますか?

私は自分のアプリケーションを設定し、メタデータファイルを構築できました。

TestShibを使用すると、自分のメタデータファイルをhereにアップロードできます。

私は私の最後にTestShibのメタデータを正しく設定し、TestShibのエンドポイントを指し示すテストボタンを構築しました。

私がそのボタンをクリックすると、TestShibにリダイレクトされ、テスト用の資格情報が提供されます。メタデータがリダイレクトと一致しないため、エラーが発生します。

TestShibや他のIDPは、受信した認証要求の後に(いくつかのSPの中で)適切なメタデータを見つける方法を教えてください。エンティティIDはサービスプロバイダのURLと一致する必要がありますか?

EDIT:(詳細を追加しました)(TestShibに以前にアップロードした)

SPのメタデータ:

<?xml version="1.0" encoding="UTF-8"?> 
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" cacheDuration="P10D" entityID="https://www.example.com"> 
    <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> 
     <md:KeyDescriptor xmlns:ds="http://www.w3.org/2000/09/xmldsig#" use="signing"> 
      <ds:KeyInfo> 
       <ds:X509Data> 
        <ds:X509Certificate>MIIDBDC .. QltX1icsr0=</ds:X509Certificate> 
       </ds:X509Data> 
      </ds:KeyInfo> 
     </md:KeyDescriptor> 
     <md:KeyDescriptor xmlns:ds="http://www.w3.org/2000/09/xmldsig#" use="encryption"> 
      <ds:KeyInfo> 
       <ds:X509Data> 
        <ds:X509Certificate>MIIDBDC .. QltX1icsr0=</ds:X509Certificate> 
       </ds:X509Data> 
      </ds:KeyInfo> 
     </md:KeyDescriptor> 
     <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat> 
     <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://staging.example.com/complete/xx-saml/" index="1" /> 
    </md:SPSSODescriptor> 
    <md:Organization> 
     <md:OrganizationName xml:lang="en-US">example</md:OrganizationName> 
     <md:OrganizationDisplayName xml:lang="en-US">Example</md:OrganizationDisplayName> 
     <md:OrganizationURL xml:lang="en-US">https://www.example.com</md:OrganizationURL> 
    </md:Organization> 
    <md:ContactPerson contactType="technical"> 
     <md:GivenName>John Doe</md:GivenName> 
     <md:EmailAddress>[email protected]</md:EmailAddress> 
    </md:ContactPerson> 
    <md:ContactPerson contactType="support"> 
     <md:GivenName>John Doe</md:GivenName> 
     <md:EmailAddress>[email protected]</md:EmailAddress> 
    </md:ContactPerson> 
</md:EntityDescriptor> 

要求:

https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO?SAMLRequest=fVNN ...

<samlp:AuthnRequest 
    AssertionConsumerServiceURL="https://staging.example.com/complete/saml/" 
    Destination="https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO" 
    ID="ONELOGIN_973a7f348c282cc6dedd4410f900efcf9538dcda" IssueInstant="2016-08-22T14:12:11Z" 
    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" ProviderName="Example" 
    Version="2.0" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"> 
    <saml:Issuer>https://www.example.com</saml:Issuer> 
    <samlp:NameIDPolicy AllowCreate="true" 
     Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/> 
    <samlp:RequestedAuthnContext Comparison="exact"> 
     <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef> 
    </samlp:RequestedAuthnContext> 
</samlp:AuthnRequest> 

エラー:

10:10:39.009 - WARN [org.opensaml.saml2.binding.AuthnResponseEndpointSelector:206] - Relying party 'https://www.example.com' requested the response to be returned to endpoint with ACS URL 'https://staging.example.com/complete/saml/' and binding 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST' however no endpoint, with that URL and using a supported binding, can be found in the relying party's metadata 
    10:10:39.009 - ERROR [edu.internet2.middleware.shibboleth.idp.profile.AbstractSAMLProfileHandler:447] 
    - No return endpoint available for relying party https://www.example.com 

https://staging.example.com/complete/saml/が利用可能なので、問題は、メタデータ情報がTestShibによって発見されなかったということのようです。エンティティIDと発行者が一致するように見える。..

+1

実際のエラーとメタデータを投稿できますか? –

+1

私は詳細を追加しました。 Python Social Authは多くの設定を必要としないので、メタデータとアサーションは一致するはずです。バージョンが正しくない可能性がありますか? – martincho

答えて

3

AuthN要求(https://staging.example.com/complete/saml/)でアサーションコンシューマサービスURLがある、メタデータ(https://staging.example.com/complete/xx-saml/)で1と一致しないことにより、スローエラーに沿ったものでもありますIdP。

最も速い修正は、メタデータを編集して、使用する実際のACSを反映するように、< md:AssertionConsumerService ... />要素を修正することです。

関連する問題