仅限 wso2 身份服务器 oauth 用户信息 returns sub

wso2 identity server oauth userinfo only returns sub

我已经在 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"}

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

P.S 尝试了 IS 5.1 和 5.2

您遇到的问题似乎已在 [1] 中报告。问题最初是针对 IS 5.1.0 报告的,在 5.2.0 版本中存在一些不一致。根据 jira,这将在 5.3.0 版本中修复,计划很快发布。

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

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

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

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

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