Мне кажется, что я искал высоко и низко для того, что должно быть простой конфигурацией: и приходите пустым.CAS и Shibboleth Интеграция, освобождающая основное имя (имя пользователя) в качестве атрибута в SAML
Я совершенно новичок в Shibboleth, хотя я работал с CAS немного, ничего слишком интенсивного. Я установил его (следуя руководству по адресу: https://wiki.jasig.org/display/CASUM/Shibboleth-CAS+Integration), чтобы Shibboleth перенаправлял CAS для аутентификации. Это прекрасно работает, и как только пользователь аутентифицируется, они перенаправляются через Shibboleth, и ответ SAML отправляется. Я тестирую, используя https://sp.testshib.org, и он правильно получает ответ и отображает страницу.
Что я могу не понять, так это как просто выписать простой атрибут с именем пользователя, используемым для входа в CAS. Я знаю, что Шибболет видит это (из idp-process.log), но я не могу понять, что добавить в атрибут-resolver.xml и attribute-filter.xml, чтобы освободить это.
Текущий ответ SAML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?><saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="_da56752846e00c2693ece2c486d7c870" IssueInstant="2012-11-16T14:08:07.570Z" Version="2.0">
<saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://<idpurl>/idp/shibboleth</saml2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#_da56752846e00c2693ece2c486d7c870">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>7OHKEiEQ0ZcPDcnt4B8PIGoLEfw=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>S3FZI+KpNf8wUYWMA96ccAj0Y5ebojB1xKHlixHWNEr4voqHOGSpBzxdui0IVtUwLEzj4RrDFdYarJaZj6ltzFV4hfNx5bN88zYQG6w9BBP9UybG+81Wrhii2O31AmRz2Y6XIqa72CeN2R4DKo70awn6FXIPLAcEKs+7dAG2lQ87VS3Wv126DghE/eGcMLW6+z9a3MxXtUFSmWYosaIbNREJn4mGO/uGzD27eeo6SNmvBx/BgVh7T2cOIbtD8b9OOZT8Urt0kZ2nsoCZHgp1T0V6ZgnE2TDvPTInrxzC5c4S+YOYZlB0ijMI6pk+PpJGshe7MVUcEO34Nn0I3i0OUw==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate><!--Valid Certificate--></ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<saml2:Subject>
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" NameQualifier="https://<idpurl>/idp/shibboleth" SPNameQualifier="https://sp.testshib.org/shibboleth-sp">_4b1a2780b2ce3db36ea7e7f6192b7108</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData Address="<valid ip address>" InResponseTo="_aa4e23dd783eddb1be18ad224c26e7cf" NotOnOrAfter="2012-11-16T14:13:07.570Z" Recipient="https://sp.testshib.org/Shibboleth.sso/SAML2/POST"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2012-11-16T14:08:07.570Z" NotOnOrAfter="2012-11-16T14:13:07.570Z">
<saml2:AudienceRestriction>
<saml2:Audience>https://sp.testshib.org/shibboleth-sp</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement AuthnInstant="2012-11-16T14:08:07.554Z" SessionIndex="00568a153d3cccf9c17abf2c77a043ed8b74a74fe5e2c61000590269aa87f99a">
<saml2:SubjectLocality Address="<valid ip address>"/>
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef>
</saml2:AuthnContext>
</saml2:AuthnStatement>
</saml2:Assertion>
Я просто нужен пример того, как получить это настроить. Я прочитал всю документацию на wiki.shibboleth.net и по-прежнему не могу ее получить.
Большое вам спасибо за вашу помощь, я знаю, что это всего лишь конфигурация, но это заставляет мой мозг чувствовать себя глупым, и я даже не пытался интегрироваться с чем-то более интенсивным, чем TestShib!
EDIT: Я нашел это руководство по настройке, которое частично помогает, я смог передать имя как атрибут, выполнив поиск по активному каталогу, но это не подходящее долгосрочное решение, поскольку CAS может проверять более одного репозитория пользователя, и это не обязательно то же самое, что это проверит, чтобы получить его. Я просто хочу выпустить $ {requestContext.principalName} как атрибут.
Любые лучшие идеи? Может быть, статический коннектор, но я не уверен, как заставить его разрешить $ {requestContext.principalName}?
Вы хотите выпустить имя пользователя в теге NameID или в атрибуте? – performanceuser
В качестве атрибута предпочтительно есть несколько SP, которые в конечном итоге должны будут обслуживаться этой системой IDP, и у меня нет формата ответа для каждого из них (все еще изучается фаза, чтобы узнать, будет ли это маршрут, который мы будем go), поэтому, если они принимают SAML 2.0, то атрибут, вероятно, будет проще всего разместить. – CDerrig