我想以明文形式检索NameID
使用的IDP
,但是使用getAuthData
函数,我得到了一个加密值。
怎么办?
实际上,我可以使用:
require_once("pathlin");
$as = new SimpleSAML_Auth_Simple('default-sp');
$attrs = $as->getAttributes();
我可以解析字典并获得一些属性。
但是现在我想获取NameID,我尝试使用:
$as->getAuthData("saml:sp:NameID")->value
authsource.php:
$config = [
'admin' => [
'core:AdminPassword',
],
'example-userpass' => [
'exampleauth:UserPass',
'testuid:testtest' => [
'uid' => ['testuid'],
],
],
];
saml20-idp-hosted.php:
$metadata['__DYNAMIC:1__'] = [
'host' => '__DEFAULT__',
'privatekey' => 'example.org.pem',
'certificate' => 'example.org.crt',
'auth' => 'example-userpass',
'attributes.NameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
'authproc' => array(
100 => array('class' => 'core:AttributeMap', 'name2oid'),
),];
config.php(authproc.idp):
'authproc.idp' => [
1 => array(
'class' => 'saml:TransientNameID',
),
2 => array(
'class' => 'saml:PersistentNameID',
'attribute' => 'eduPersonPrincipalName',
),
3 => array(
'class' => 'saml:AttributeNameID',
'attribute' => 'mail',
'Format' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',),],
那么,如何通过NameID获取'testuid'?
提前谢谢!
答案 0 :(得分:0)
您的IdP没有设置NameID,并且您的SP并没有请求非临时的NameID。默认情况下,SSP会生成一个瞬态NameID,该瞬态NameID只是随机的,而不是加密值。
要在测试IDP中设置NameID,您需要一个authproc过滤器来设置NameID。 AttributeNameID将让您从属性中设置一个。 最后,您将需要SP在身份验证请求中请求nameID(请参见NameID policy),或确保您的SP元数据已定义了所需的nameID格式(通过在SP authsource中定义NameIDFormat并将元数据重新加载到idp)。
最后,通常只需将用户名放在属性中就容易得多。