如何在SimpleSAMLphp中更改NameID

问题描述 投票:0回答:3

我正在使用 simpleSAMLphp 开发 SSO。

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

我该如何执行此操作?在元数据中?或者我可以通过代码来完成吗?

谢谢,

php saml simplesamlphp
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 即可。

感谢安东尼的帮助。


3
投票

metadata/saml20-idp-hosted中,添加此配置:

```
  /* 自定义nameID */
  'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
  'authproc' => 数组(
    3 => 数组(
    'class' => 'saml:AttributeNameID',
    'identifyingAttribute' => 'uid',
    '格式' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
    ),
  ),
````

您将收到 SAML 响应断言:

```

学生




````

1
投票

这可能是一个老问题,但是当我最近遇到这个问题时,我想我可以简单地编辑 saml20-sp-remote.php 并将 nameid-format 更改为我需要的任何内容。我需要将我的状态从暂时性更改为持久性,因为我的 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 格式。希望这对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.