2016-08-19 2 views
1

Я использую TestShib и Python Social Auth SAML backend для реализации поставщика услуг в приложении Django.Как поставщик услуг SAML соответствует информации метаданных IDP?

Я смог настроить свое приложение и создать файл метаданных.

TestShib позволяет загружать мой файл метаданных here.

Я правильно установил метаданные TestShib на моем конце и создал тестовую кнопку, указывающую на конечную точку TestShib.

Когда я нажимаю эту кнопку, я перенаправляюсь в TestShib, затем предоставляю тестовые учетные данные, а затем получаю сообщение об ошибке, потому что метаданные не соответствуют перенаправлению.

Как TestShib или любой другой IDP удается найти правильные метаданные (из нескольких SP) после входящего запроса auth? Должен ли EntityID соответствовать URL-адресу поставщика услуг?

EDIT: (добавлено подробнее)

метаданных SP (в закачанный ранее в TestShib):

<?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. Идентификатор объекта и Эмитент, кажется, соответствует ..

+1

Можете ли вы опубликовать фактическую ошибку, а также ваши метаданные? –

+1

Я добавил дополнительную информацию. Python Social Auth не требует большой настройки, поэтому я думал, что метаданные и утверждение должны совпадать. Может быть, версии неверны? – martincho

ответ

3

URL-адрес Assertion бытового обслуживания в запросе AuthN (https://staging.example.com/complete/saml/) не соответствует одному в метаданных (https://staging.example.com/complete/xx-saml/), которая также находится в соответствии с ошибкой Брошенный IdP.

Самое быстрое исправление - отредактировать метаданные и исправить элемент < md: AssertionConsumerService ... />, чтобы он отражал фактическую ACS, которая будет использоваться.

Смежные вопросы