3

我正在使用simpleSAMLphp开发 SSO 。

我正确配置了服务提供商和 IdP,但我必须使用特定格式的 NameID 将 XML 发送到 SP。

我该怎么做?在元数据中?还是我可以通过代码做到这一点?

谢谢,

4

3 回答 3

3

我已经排序了,我在下面发布了解决方案:

在 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 即可。

感谢安东尼的帮助。

于 2014-07-14T13:26:54.113 回答
1

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:主题>
```
于 2020-10-07T12:30:51.703 回答
0

这可能是一个老问题,但是当我最近遇到这个问题时,我想我可以简单地编辑 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 格式。希望这可以帮助某人。

于 2017-03-19T12:47:59.297 回答