onelogin SSO конфигурация shibboleth ACS

Я пытаюсь заставить Shibboleth SP работать с OneLogin [SAML Test Connector (IdP w / attr)] в моей лаборатории. Мне удалось заставить все работать с IDP testshib, но когда я меняю поставщика метаданных и обновляю свой идентификатор объекта SSO, я просто получаю эту ошибку:

Сообщение SAML доставлено с помощью POST на неправильный URL-адрес сервера

Глядя на свой файл метаданных, я вижу, что мой ACS:

http://testserver/Shibboleth.sso/SAML2/POST

но когда он помещается в мой тестовый разъем OneLogin, все, что я получаю, - это указанная выше ошибка.

Ниже мой файл Shibboleth2.xml (с удаленным идентификатором объекта)

    <SPConfig xmlns="urn:mace:shibboleth:2.0:native:sp:config" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" clockSkew="1800">
<!--  Windows RequestMapper  -->
<!--
 The RequestMap defines portions of the webspace to protect; testserver/secure here. 
-->
<!--
 https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPRequestMap 
-->

    <InProcess logger="native.logger">
        <ISAPI normalizeRequest="true" safeHeaderNames="false">
            <!--
            Maps IIS Instance ID values to the host scheme/name/port. The name is
            required so that the proper <Host> in the request map above is found without
            having to cover every possible DNS/IP combination the user might enter.
            -->
            <Site id="1" name="testserver"/>
            <!--
            When the port and scheme are omitted, the HTTP request's port and scheme are used.
            If these are wrong because of virtualization, they can be explicitly set here to
            ensure proper redirect generation.
            -->
            <!--
            <Site id="42" name="virtual.example.org" scheme="https" port="443"/>
            -->
        </ISAPI>
    </InProcess>

<RequestMapper type="Native">
<RequestMap applicationId="default">
<Host name="testserver">
<Path name="secure" authType="shibboleth" requireSession="true"/>
</Host>
</RequestMap>
</RequestMapper>
<!--
 The entityID is the name TestShib made for your SP. 
-->
<ApplicationDefaults entityID="" REMOTE_USER="eppn">
<!--
 You should use secure cookies if at all possible.  See cookieProps in this Wiki article. 
-->
<!--
 https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPSessions 
-->
<Sessions lifetime="28800" timeout="3600" checkAddress="false" relayState="ss:mem" handlerSSL="false">
<!--
 Triggers a login request directly to the TestShib IdP. 
-->
<!--
 https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPServiceSSO 
-->
<SSO entityID="">SAML2</SSO>
<!--  SAML and local-only logout.  -->
<!--
 https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPServiceLogout 
-->
<Logout>SAML2 Local</Logout>
<!--

                Handlers allow you to interact with the SP and gather more information.  Try them out!
                Attribute values received by the SP through SAML will be visible at:
                http://sdserver/Shibboleth.sso/Session

-->
<!--
 Extension service that generates "approximate" metadata based on SP configuration. 
-->

<Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>
<!--  Status reporting service.  -->
<Handler type="Status" Location="/Status" acl="127.0.0.1 ::1"/>
<!--  Session diagnostic service.  -->
<Handler type="Session" Location="/Session" showAttributeValues="true"/>
<!--  JSON feed of discovery information.  -->
<Handler type="DiscoveryFeed" Location="/DiscoFeed"/>

</Sessions>
<!--
 Error pages to display to yourself if something goes horribly wrong. 
-->
<Errors supportContact="root@localhost" logoLocation="/shibboleth-sp/logo.jpg" styleSheet="/shibboleth-sp/main.css"/>
<!--
 Loads and trusts a metadata file that describes only the Testshib IdP and how to communicate with it. 
-->
<MetadataProvider type="XML" file="onelogin_metadata.xml"/>
<!--
 Attribute and trust options you shouldn't need to change. 
-->
<AttributeExtractor type="XML" validate="true" path="attribute-map.xml"/>
<AttributeResolver type="Query" subjectMatch="true"/>
<AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>
<!--
 Your SP generated these credentials.  They're used to talk to IdP's. 
-->
<CredentialResolver type="File" key="sp-key.pem" certificate="sp-cert.pem"/>
</ApplicationDefaults>
<!--
 Security policies you shouldn't change unless you know what you're doing. 
-->
<SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>
<!--
 Low-level configuration about protocols and bindings available for use. 
-->
<ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/>
</SPConfig>

Метаданные (снова удалена конфиденциальная информация)

    <?xml version="1.0"?>
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://app.onelogin.com/saml/metadata/">
  <IDPSSODescriptor xmlns:ds="http://www.w3.org/2000/09/xmldsig#" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate></ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </KeyDescriptor>
    <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://.onelogin.com/trust/saml2/http-post/sso/"/>
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://.onelogin.com/trust/saml2/http-post/sso/"/>
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://.onelogin.com/trust/saml2/soap/sso/"/>
  </IDPSSODescriptor>
  <ContactPerson contactType="technical">
    <SurName>Support</SurName>
    <EmailAddress>[email protected]</EmailAddress>
  </ContactPerson>
</EntityDescriptor>

У коннектора есть только такие настройки:

ACS (Consumer) URL Validator: ^ http: //testserver/shibboleth.sso/SAML2/POST$

URL ACS (потребительский) http://testserver/shibboleth.sso/SAML2/POST


person Gary Lyon    schedule 16.06.2016    source источник
comment
Можете ли вы поделиться метаданными SP и тем, что вы установили на коннекторе?   -  person smartin    schedule 16.06.2016


Ответы (1)


Это руководство объясняет вам, как настроить коннектор OneLogin.

В Shibboleth:

Отредактируйте /etc/shibboleth/shibboleth2.xml, чтобы добавить URL-адрес метаданных в качестве поставщика метаданных.

Я видел, что вы уже получили URL-адрес метаданных для приложения, войдя в OneLogin в качестве администратора и щелкнув Test Connector> вкладка SSO> URL-адрес эмитента.

и добавил в файл:

<MetadataProvider type="XML" file="onelogin_metadata.xml"/>

Добавьте сопоставление атрибутов, отредактируйте /etc/shibboleth/attribute-map.xml и добавьте следующие атрибуты:

<!-- OneLogin attributes -->

<Attribute name="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" id="login">
 <AttributeDecoder xsi:type="ScopedAttributeDecoder"/>
</Attribute>

<Attribute name="User.Email" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" id="email">
 <AttributeDecoder xsi:type="ScopedAttributeDecoder"/>
</Attribute>

<Attribute name="User.FirstName" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" id="firstName">
 <AttributeDecoder xsi:type="StringAttributeDecoder"/>
</Attribute>

<Attribute name="User.LastName" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" id="lastName">
 <AttributeDecoder xsi:type="StringAttributeDecoder"/>
</Attribute>

Произошла ошибка «Сообщение SAML доставлено с помощью POST на неправильный URL-адрес сервера» задокументировано:

When a SAML message is addressed to a location inconsistent with where the SP believes it's running, this error will be thrown. The SP pulls much of this information from the web environment.

* Verify that the server name and port are properly set in accordance with the SP's metadata.
* Rewriting rules in effect for the Shibboleth.sso handler path must be consistent with the SP's metadata.
* The IdP needs to properly address the SAML response.

Запишите поток SAML с помощью SAML Tracer Tool и убедитесь, что ответ SAML отправляется с использованием привязки HTTP-POST к http: //testserver/shibboleth.sso/SAML2/POST конечная точка.

Я не эксперт по шибболу, но, возможно, это связано с фактом отправки с HTTPS на HTTP, как описано здесь, объяснение здесь

person smartin    schedule 16.06.2016
comment
Привет, смартин. Я пробовал вики SAML, но безуспешно. Я попробовал средство отслеживания SAML, и я действительно вижу, что SAML работает в обоих направлениях, но в ответ он красный. Я вернулся к TestShib, и все работало правильно (зеленый цвет в обоих направлениях). Затем я убедился, что TestShib использует тот же ACS, что и я, и они. Так что я до сих пор не уверен, что делаю не так. - person Gary Lyon; 21.06.2016