我使用SimpleSAMLphp为SSO系统配置了标识提供程序(IdP)。
我的配置文件的主要部分:
配置/ config.php中
$config = array(
[...]
'enable.saml20-idp' => true,
'enable.shib13-idp' => true,
[...]
);
配置/ authsources.php
$config = array(
[...]
'*-sql' => array(
'sqlauth:SQL',
'dsn' => 'mysql:host=*.*.*.*;port=*;dbname=*',
'username' => '*',
'password' => '*',
'query' => 'SELECT *
FROM users
WHERE username = *
AND password = *',
),
[...]
);
元数据/ saml20-IDP-hosted.php
$metadata['__DYNAMIC:1__'] = array(
'host' => '__DEFAULT__',
'privatekey' => '../cert/*.key',
'certificate' => '../cert/*.pem',
'auth' => '*-sql',
'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',
),
),
);
元数据/ saml20-IDP-remote.php
$metadata['https://www.video2brain.com/shibboleth'] = array(
'AssertionConsumerService' => 'http://*/Shibboleth.sso/SAML2/POST',
'SingleSignOnService' => 'http://*/Shibboleth.sso/SAML2/POST',
'SingleLogoutService' => 'http://*/Shibboleth.sso/SLO/POST',
);
证书和元数据已成功配置。 SSO工作正常。
但服务提供商(SP)已要求IdP必须传递更多已登录用户的信息。当查询返回一行时,将传递身份验证,但我无法访问SELECT中的字段。
目前,我的IdP发送给其SP的最终POST请求具有以下参数:
HTTP_SHIB_IDENTITY_PROVIDER=https://*/metadata.php,
HTTP_SHIB_AUTHENTICATION_INSTANT=2015-10-20T09:04:42Z,
HTTP_SHIB_AUTHENTICATION_METHOD=urn:oasis:names:tc:SAML:2.0:ac:classes:Password,
HTTP_SHIB_AUTHNCONTEXT_CLASS=urn:oasis:names:tc:SAML:2.0:ac:classes:Password,
HTTP_EMAIL=*@*.*,
HTTP_PERSISTENT_ID=!https://*/shibboleth-sp!6faa919dda0e40e5e42088bcd9beb639ed4dfa5e
他们希望在新参数中使用用户的全名。这样的事情:
[...]
HTTP_USER_NAME=FooUserName
我尝试过使用"添加属性(核心:属性添加)"方法但不起作用。有可能吗?任何文档,资源或示例都会有所帮助。
感谢。
答案 0 :(得分:0)
我将参数设置为“givenName”而不是“name”,它可以工作!
之前我做过这些事情,但我试图使用“name”作为最后一个参数“name”,直到我使用“givenName”才行。
有人可以说我为什么? 参数名称是不可配置的? 可能是SP,IdP必须在两边配置相同的名称?