答案 0 :(得分:2)
我已经排序了,我发布了以下解决方案:
在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。
感谢Anthony的帮助。
答案 1 :(得分:0)
这可能是一个老问题,但是当我最近遇到这个问题时,我想我可以简单地编辑saml20-sp-remote.php并将nameid格式更改为我需要的任何内容。我需要将我的瞬间改为持续的sisnce我的SP期待。简单地用“持久性”替换“瞬态”是行不通的。 nameidattribute值也必须更改。我在那里有'SAML_SUBJECT'而不是NameID。在我的saml20-sp-remote.php中,属性部分如下所示:
function index(){
$this->load->helper('login');
$id = 1;
get_user_details($id);
}
一旦我的nameidattibute值更改为NameID,而不是我的默认值SAML_SUBJECT,我能够使用持久的nameid格式。希望这有助于某人。
答案 2 :(得分:0)
在元数据/ saml20-idp托管中,添加以下配置:
``` /* 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> ```