【问题标题】:wso2 identity server oauth userinfo only returns subwso2 身份服务器 oauth userinfo 仅返回 sub
【发布时间】:2017-05-07 23:16:37
【问题描述】:

我已经在 wso2 身份服务器中设置了 SP,并且能够使用 Playground 在 auth2 中获取 access_token。 参考:https://docs.wso2.com/display/IS510/OAuth+2.0+with+WSO2+Playground

然后我访问了 userinfo 端点,例如:

curl -k -H "Authorization: Bearer 603b0a91-0354-3b64-90e9-0eb1fdd8f162" https://localhost:9443/oauth2/userinfo?schema=openid

我总是得到 JSON:

{"sub":"admin@carbon.super"}

但默认情况下还应该有其他属性,如名字、姓氏、电子邮件...等。如何配置服务器以返回所有这些信息?

P.S 试过 IS 5.1 和 5.2

【问题讨论】:

标签: wso2 wso2is


【解决方案1】:

似乎 UserInfo Endpoint 为范围 openid 返回声明的逻辑只是在 OIDC 文件中配置的声明和在 SP 级别配置的声明的交集被返回。基于这个逻辑,我能够通过以下步骤解决这个问题。

  1. WSO2 IS 默认 openid 范围绑定到一组预定义的声明。您可以使用 /_system/config/oidc 中的 oidc 文件对其进行配置,如下面的屏幕截图所示。
  2. 比如说。如果你想默认使用 openId 范围获取用户的电子邮件地址,它应该带有 userInfo 端点,因为默认设置了“电子邮件”方案(见上面的截图)
  3. 根据default claims

查看http://wso2.org/oidc/claim dialect 的电子邮件声明的 Claim UriMapped Attribute 的值

  1. 现在您需要将映射到http://wso2.org/oidc/claim 中的电子邮件声明的正确http://wso2.org/claims 声明添加到SP 配置。您可以使用相同的 映射属性 找到它。 即对于此示例,http://wso2.org/claims 中有相同的“电子邮件”声明。
  2. http://wso2.org/claims 中的“电子邮件”声明添加到 SP 配置

现在请求

curl -k -H "Authorization: Bearer 8b2805a7-5b74-33ee-84df-2a8c53a16f6c" https://localhost:9443/oauth2/userinfo?schema=openid

你会得到回应

{"sub":"admin@carbon.super","email":"admin@wso2.com"}

【讨论】:

  • 我拥有您提到的所有配置,并且我正在尝试使用 facebook 作为 IDP 登录,但在收到电子邮件、given_name 和 family_name 时,我仍然只收到 userinfo 端点的响应谷歌和链接。可能是什么问题?我们正在使用 WSO2 IS 5.3.0
【解决方案2】:

您所面临的问题似乎已在 [1] 中报告。最初报告了 IS 5.1.0 的问题,并且在 5.2.0 版本中存在一些不一致之处。根据 jira 的说法,这将在 5.3.0 版本中修复,该版本计划很快发布。

[1]https://wso2.org/jira/browse/IDENTITY-4250

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2012-11-18
    相关资源
    最近更新 更多