我正在使用simpleSAMLphp开发 SSO 。
我正确配置了服务提供商和 IdP,但我必须使用特定格式的 NameID 将 XML 发送到 SP。
我该怎么做?在元数据中?还是我可以通过代码做到这一点?
谢谢,
我正在使用simpleSAMLphp开发 SSO 。
我正确配置了服务提供商和 IdP,但我必须使用特定格式的 NameID 将 XML 发送到 SP。
我该怎么做?在元数据中?还是我可以通过代码做到这一点?
谢谢,
我已经排序了,我在下面发布了解决方案:
在 IdP authsources 配置文件中:
'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中,添加以下配置:
``` /* 自定义名称 ID */ 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'authproc' => 数组( 3 => 数组( 'class' => 'saml:AttributeNameID', '属性' => 'uid', '格式' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', ), ), ```
您将在 SAML 响应断言中收到:
``` <saml:主题> <saml:NameID SPNameQualifier="http://127.0.0.1:8080/auth/realms/external" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" >学生</saml:姓名ID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData NotOnOrAfter="2020-10-07T12:12:25Z" 收件人="http://127.0.0.1:8080/auth/realms/external/broker/simplesaml/endpoint" InResponseTo="ID_8c4e1542-b034-4e42-93db-cec8de2e76e4" /> </saml:SubjectConfirmation> </saml:主题> ```
这可能是一个老问题,但是当我最近遇到这个问题时,我想我可以简单地编辑 saml20-sp-remote.php 并将 nameid-format 更改为我需要的任何内容。我需要将我的从暂时性更改为持久性 sisnce 我的 SP 所期望的。简单地用“持久”替换“瞬态”是行不通的。nameidattribute 值也必须更改。我所拥有的是“SAML_SUBJECT”而不是 NameID。在我的 saml20-sp-remote.php 中,属性部分如下所示:
'attributes' =>
array (
0 => 'SAML_SUBJECT',
1 => 'NameID',
2 => 'ClientID',
3 => 'FirstName',
4 => 'LastName',
5 => 'Email',
),
一旦我的 nameidattibute 值更改为 NameID,而不是我的默认 SAML_SUBJECT,我就能够使用持久 nameid 格式。希望这可以帮助某人。