Шибболет действительно передает атрибут серверной переменной в PHP

Я создаю базирующийся объединенный в федерацию механизм аутентификации SAML, в котором IdP является ADFS 2.0, и SP является Шибболет, работающий на Linux. Я могу сделать следующее:

  1. Попытайтесь получить доступ к защищенной странице, которая перенаправляет меня к странице входа в систему IdP.
  2. Зарегистрируйте на пути страницу входа в систему IdP, и будьте возвращены к защищенной странице.
  3. Обзор к spserver.internal/Shibboleth.sso/Session и видит возвращенные атрибуты, включая eppn.

Я, однако, не могу извлечь атрибут eppn в форме заголовка REMOTE_USER в PHP.

Я отключил attribute-policy.xml (прокомментировал его в shibboleth2.xml).

Я пропускаю что-то тривиальное, я подозреваю для мира меня, я не знаю что. Или PHP не берет серверные переменные, установленные Шибболетом или Шибболетом, никогда не устанавливает их. Какие-либо идеи?

Вывод от spserver.internal/Shibboleth.sso/Session

Miscellaneous
Session Expiration (barring inactivity): 479 minute(s)
Client Address: a.b.c.d
SSO Protocol: urn:oasis:names:tc:SAML:2.0:protocol
Identity Provider: http://veragence.thesixthflag.com/adfs/services/trust
Authentication Time: 2014-10-28T11:55:23.947Z
Authentication Context Class: urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
Authentication Context Decl: (none)

Attributes
eppn: user.id@adfs.idp.server

Соответствующая строка из shibboleth2.xml:

    <ApplicationDefaults entityID="https://spURL/shibboleth"
                     REMOTE_USER="eppn persistent-id targeted-id">

Соответствующая строка из attribute-map.xml

<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" id="eppn">
    <AttributeDecoder xsi:type="ScopedAttributeDecoder"/>
</Attribute>

Соответствующий вывод из shibd.log

2014-10-28 11:55:21 DEBUG Shibboleth.SSO.SAML2 [2]: extracting issuer from SAML 2.0 assertion
2014-10-28 11:55:21 DEBUG OpenSAML.SecurityPolicyRule.MessageFlow [2]: evaluating message flow policy (replay checking on, expiration 60)
2014-10-28 11:55:21 DEBUG XMLTooling.StorageService [2]: inserted record (_06157709-48ab-4701-90b2-b3ecea5df51f) in context (MessageFlow) with expiration (1414497564)
2014-10-28 11:55:21 DEBUG OpenSAML.SecurityPolicyRule.XMLSigning [2]: validating signature profile
2014-10-28 11:55:21 DEBUG XMLTooling.TrustEngine.ExplicitKey [2]: attempting to validate signature with the peer's credentials
2014-10-28 11:55:21 DEBUG XMLTooling.TrustEngine.ExplicitKey [2]: signature validated with credential
2014-10-28 11:55:21 DEBUG OpenSAML.SecurityPolicyRule.XMLSigning [2]: signature verified against message issuer
2014-10-28 11:55:21 DEBUG OpenSAML.SecurityPolicyRule.BearerConfirmation [2]: assertion satisfied bearer confirmation requirements
2014-10-28 11:55:21 DEBUG Shibboleth.SSO.SAML2 [2]: SSO profile processing completed successfully
2014-10-28 11:55:21 DEBUG Shibboleth.SSO.SAML2 [2]: extracting pushed attributes...
2014-10-28 11:55:21 DEBUG Shibboleth.AttributeExtractor.XML [2]: unable to extract attributes, unknown XML object type: samlp:Response
2014-10-28 11:55:21 DEBUG Shibboleth.AttributeExtractor.XML [2]: unable to extract attributes, unknown XML object type: {urn:oasis:names:tc:SAML:2.0:assertion}AuthnStatement
2014-10-28 11:55:21 INFO Shibboleth.AttributeExtractor.XML [2]: skipping unmapped SAML 2.0 Attribute with Name: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn, Format:urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified
2014-10-28 11:55:21 DEBUG Shibboleth.AttributeDecoder.Scoped [2]: decoding ScopedAttribute (eppn) from SAML 2 Attribute (urn:oid:1.3.6.1.4.1.5923.1.1.1.6) with 1 value(s)
2014-10-28 11:55:21 DEBUG Shibboleth.SSO.SAML2 [2]: resolving attributes...
2014-10-28 11:55:21 DEBUG Shibboleth.AttributeResolver.Query [2]: found AttributeStatement in input to new session, skipping query
2014-10-28 11:55:21 DEBUG Shibboleth.SessionCache [2]: creating new session
2014-10-28 11:55:21 DEBUG Shibboleth.SessionCache [2]: storing new session..
1
задан 3 December 2015 в 01:27
1 ответ

Я думаю, что ответ, который дает @pete k, правильный - хотя сначала я этого не понял. Для других с ограниченными знаниями Apache (таких как я), пытающихся настроить Shibboleth, Shibboleth не делает автоматически свои серверные переменные доступными для каждой страницы в вашем приложении, если вы явно не укажете это. Вы можете сделать это, поместив следующий вид кода либо в файл .htaccess , либо в файл в /etc/httpd/conf.d/

<Location /location-you-want-to-access-server-variables>
   AuthType shibboleth
    # ShibRequestSetting requireSession 1
   Require shibboleth
</Location>

Если вы раскомментируете среднюю директиву , страницы в указанном месте будут принудительно аутентифицированы с помощью shibboleth. Если вы оставите комментарий, авторизация не будет принудительной, но у вас будет доступ к переменным вашего сервера shibboleth. В PHP, например, они находятся в $ _ SERVER - хотя, конечно, они не будут установлены, пока вы не выполните аутентификацию через Shibboleth.

0
ответ дан 4 December 2019 в 08:26

Теги

Похожие вопросы