Я разрабатываю SSO, используя simpleSAMLphp.
Я правильно настроил поставщика услуг и IdP, но мне нужно отправить XML в SP с NameID в определенном формате.
Как я могу это сделать? В метаданных? или я могу сделать это через код?
Спасибо,
Я разрабатываю SSO, используя simpleSAMLphp.
Я правильно настроил поставщика услуг и IdP, но мне нужно отправить XML в SP с NameID в определенном формате.
Как я могу это сделать? В метаданных? или я могу сделать это через код?
Спасибо,
Я уже разобрался, ниже выкладываю решение:
В файле конфигурации источников авторизации IdP:
'idp-name' => array(
...
'message' => 'key1:'.$value1.';key2:'.$value2,
...
),
И в метаданных поставщика услуг (saml20-sp-remote.php):
...
'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:persistent',
'simplesaml.nameidattribute' => 'message',
...
Затем в вашем коде вам нужно указать только $value1 и $value2 перед выполнением аутентификации.
Спасибо Антону за помощь.
В metadata/saml20-idp-hosted добавьте следующую конфигурацию:
``` /* Custom nameID */ 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'authproc' => array( 3 => array( 'class' => 'saml:AttributeNameID', 'attribute' => 'uid', 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', ), ), ```
В утверждении SAML Response вы получите:
``` <saml:Subject> <saml:NameID SPNameQualifier="http://127.0.0.1:8080/auth/realms/external" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" >student</saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData NotOnOrAfter="2020-10-07T12:12:25Z" Recipient="http://127.0.0.1:8080/auth/realms/external/broker/simplesaml/endpoint" InResponseTo="ID_8c4e1542-b034-4e42-93db-cec8de2e76e4" /> </saml:SubjectConfirmation> </saml:Subject> ```
Это может быть старый вопрос, но когда я недавно столкнулся с этой проблемой, я подумал, что могу просто отредактировать saml20-sp-remote.php и изменить формат nameid на то, что мне нужно. Мне нужно было изменить мой с временного на постоянный, поскольку мой SP ожидал этого. Простая замена «переходного» на «постоянный» не сработает. Значение nameidattribute также должно быть изменено. У меня было «SAML_SUBJECT» вместо NameID. В моем файле saml20-sp-remote.php раздел атрибутов выглядит следующим образом:
'attributes' =>
array (
0 => 'SAML_SUBJECT',
1 => 'NameID',
2 => 'ClientID',
3 => 'FirstName',
4 => 'LastName',
5 => 'Email',
),
После того, как значение атрибута nameidatribute было изменено на NameID вместо SAML_SUBJECT, который был моим значением по умолчанию, я смог использовать постоянный формат nameid. Надеюсь, это поможет кому-то.
NameIDFormat
, упомянутым в их документах? simplesamlphp.org/docs/stable/simplesamlphp-reference-sp-remote - person Anthony   schedule 14.07.2014