仅限 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 版本中修复,计划很快发布。
似乎 UserInfo 端点对范围 openid 的 return 声明的逻辑只是在 OIDC 文件中配置的声明和在 SP 级别配置的声明的交集 returned。基于这个逻辑,我能够通过以下步骤解决这个问题。
- WSO2 是默认的 openid 范围绑定到一组预定义的声明。您可以使用 /_system/config/oidc 中的 oidc 文件对其进行配置,如以下屏幕截图所示。
- 比如说。如果您想默认使用 openId 范围获取用户的电子邮件地址,它应该带有 userInfo 端点,因为 "email" 方案默认为 set-up(见上面的屏幕截图)
- 根据default claims
- http://wso2.org/claims - WSO2 Carbon 的默认方言
- http://wso2.org/oidc/claim - OpenID Connect 的默认方言
查看电子邮件声明的 Claim Uri 和 Mapped Attribute 的值 http://wso2.org/oidc/claim 方言
- 现在您需要将映射到 http://wso2.org/oidc/claim 中的电子邮件声明的正确 http://wso2.org/claims 声明添加到 SP 配置。您可以使用相同的 映射属性 找到它。
即对于此示例,http://wso2.org/claims 中有相同的 "Email" 声明。
- 将 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"}
我已经在 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 版本中修复,计划很快发布。
似乎 UserInfo 端点对范围 openid 的 return 声明的逻辑只是在 OIDC 文件中配置的声明和在 SP 级别配置的声明的交集 returned。基于这个逻辑,我能够通过以下步骤解决这个问题。
- WSO2 是默认的 openid 范围绑定到一组预定义的声明。您可以使用 /_system/config/oidc 中的 oidc 文件对其进行配置,如以下屏幕截图所示。
- 比如说。如果您想默认使用 openId 范围获取用户的电子邮件地址,它应该带有 userInfo 端点,因为 "email" 方案默认为 set-up(见上面的屏幕截图)
- 根据default claims
- http://wso2.org/claims - WSO2 Carbon 的默认方言
- http://wso2.org/oidc/claim - OpenID Connect 的默认方言
查看电子邮件声明的 Claim Uri 和 Mapped Attribute 的值 http://wso2.org/oidc/claim 方言
- 现在您需要将映射到 http://wso2.org/oidc/claim 中的电子邮件声明的正确 http://wso2.org/claims 声明添加到 SP 配置。您可以使用相同的 映射属性 找到它。
即对于此示例,http://wso2.org/claims 中有相同的 "Email" 声明。
- 将 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"}