首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在POST请求中将其他参数从IdP发送到SP?

如何在POST请求中将其他参数从IdP发送到SP?
EN

Stack Overflow用户
提问于 2015-10-22 08:08:44
回答 1查看 903关注 0票数 0

我已经使用IdP配置了SSO系统的标识提供者( SimpleSAMLphp )部分。

配置文件的主要部分:

config/config.php

代码语言:javascript
运行
复制
$config = array(
    [...]
    'enable.saml20-idp' => true,
    'enable.shib13-idp' => true,
    [...]
);

config/authsources.php

代码语言:javascript
运行
复制
$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

代码语言:javascript
运行
复制
$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

代码语言:javascript
运行
复制
$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请求具有以下参数:

代码语言:javascript
运行
复制
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

他们希望在一个新参数中获得用户的全名。就像这样:

代码语言:javascript
运行
复制
[...]
HTTP_USER_NAME=FooUserName

我尝试过使用“attributes (core:AttributeAdd)”方法,但没有起作用。有可能这样做吗?这方面的任何文档、资源或示例都会有帮助。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-26 09:34:26

我将参数设置为"givenName“而不是"name",它可以工作!

  1. 在auth查询中,我将用户名的别名设置为"givenName“。
  2. 在托管的idp中,在"authproc“键中,我使用de AttributeMap方法添加了"givenName”。

我以前做过这些事情,但是我尝试使用"name“作为最后的参数"name",直到我使用"givenName”才起作用。

有人能说我为什么吗?参数名称是不可配置的?可能是SP和IdP必须在双方配置相同的名称?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33276173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档