如何在 POST 请求中将其他参数从 IdP 发送到 SP?
How to send other paramenters from the IdP to the SP in the POST request?
我已经使用 SimpleSAMLphp.
配置了 SSO 系统的标识提供程序 (IdP) 部分
我的配置文件的主要部分:
config/config.php
$config = array(
[...]
'enable.saml20-idp' => true,
'enable.shib13-idp' => true,
[...]
);
config/authsources.php
$config = array(
[...]
'*-sql' => array(
'sqlauth:SQL',
'dsn' => 'mysql:host=*.*.*.*;port=*;dbname=*',
'username' => '*',
'password' => '*',
'query' => 'SELECT *
FROM users
WHERE username = *
AND password = *',
),
[...]
);
metadata/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',
),
),
);
metadata/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 必须传递更多已登录用户的信息。查询returns行时认证通过,但无法访问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
我试过使用 "Adding attributes (core:AttributeAdd)" 方法,但没有用。有可能这样做吗?任何文档、资源或示例都会有所帮助。
谢谢。
我将参数设置为 "givenName" 而不是 "name",并且有效!
- 在授权查询中,我为用户 "name" 设置了一个别名 "givenName"。
- 在 idp-hosted 中,在 "authproc" 键中我使用 de AttributeMap 方法添加了 "givenName".
我以前做过这些事情,但我试图使用 "name" 作为最终参数 "name",直到我使用 "givenName".
才起作用]
有人能告诉我为什么吗?
参数名称不可配置?
可能是 SP 和 IdP 必须在两边配置相同的名称?
我已经使用 SimpleSAMLphp.
配置了 SSO 系统的标识提供程序 (IdP) 部分我的配置文件的主要部分:
config/config.php
$config = array(
[...]
'enable.saml20-idp' => true,
'enable.shib13-idp' => true,
[...]
);
config/authsources.php
$config = array(
[...]
'*-sql' => array(
'sqlauth:SQL',
'dsn' => 'mysql:host=*.*.*.*;port=*;dbname=*',
'username' => '*',
'password' => '*',
'query' => 'SELECT *
FROM users
WHERE username = *
AND password = *',
),
[...]
);
metadata/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',
),
),
);
metadata/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 必须传递更多已登录用户的信息。查询returns行时认证通过,但无法访问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
我试过使用 "Adding attributes (core:AttributeAdd)" 方法,但没有用。有可能这样做吗?任何文档、资源或示例都会有所帮助。
谢谢。
我将参数设置为 "givenName" 而不是 "name",并且有效!
- 在授权查询中,我为用户 "name" 设置了一个别名 "givenName"。
- 在 idp-hosted 中,在 "authproc" 键中我使用 de AttributeMap 方法添加了 "givenName".
我以前做过这些事情,但我试图使用 "name" 作为最终参数 "name",直到我使用 "givenName".
才起作用]有人能告诉我为什么吗? 参数名称不可配置? 可能是 SP 和 IdP 必须在两边配置相同的名称?