WSO2 IS 5.1.0作为OAuth / OIDC IdP响应,在UserInfo端点上具有不同的声明

时间:2016-01-14 10:44:56

标签: json curl oauth-2.0 wso2is openid-connect

任何人都知道为什么如果我调用/ userinfo端点我获得了不同的JSON响应?具体做法是:

  • 当我从命令行使用curl拨打电话时,例如$curl -k -H "Authorization: Bearer 2bcea7cc9d7e4b63fd2257aa31116512" https://localhost:9443/oauth2/userinfo?schema=openid我获得了JSON的响应:{"sub":"asela","name":"asela","preferred_username":"asela","given_name":"asela","family_name":"asela"}
  • 如果我使用java客户端(实现授权代码流的库)进行调用,当客户端进行/ userinfo调用时,我会将{"sub":"asela@carbon"}这样的JSON作为响应而没有所有其他声明。

WSO2 IS中定义的服务声明是默认声明。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

我试过这个并遇到了你遇到的同样问题。正如我在之前的评论中提到的,由于索赔映射问题,问题就出现了。通常我们会从“http://wso2.org/claims”方言中获取用户的属性。但是当我们调用OpenID userInfo端点时,它将提供来自“http://wso2.org/oidc/claim”的用户属性。但是http://wso2.org/claims中的所有声明都没有在http://wso2.org/oidc/claim中定义。 (例如:移动,地址,组织)。因此,如果没有定义,我们必须在http://wso2.org/oidc/claim方言上定义所需的声明。

您可以从Identity Server管理控制台检查此声明。为此,请登录ManagementConsole>主要>清单(根据索赔)
然后你可以通过两种声称方言并将所需的声明添加到http://wso2.org/oidc/claim方言。

要添加新的声明,转到管理小说>主要>添加(在声明下)>添加新声明。请参阅附加的定义样本声明的屏幕截图。在这里,您需要映射精确的映射属性&使用http://wso2.org/claims声明Uri。

enter image description here

希望这会有所帮助。

答案 1 :(得分:0)

WSO2 IS通常会返回在“http://wso2.org/oidc/claim”声明方言下配置的声明。但是响应中的声明应该正常返回。因此,请确保您已在用户的个人资料中定义了声明值。
你可以按照[1]& [2]了解更多详情。仍然无法得到正确的响应,请附上您的SP配置并声明配置以进行进一步分析。

[1] http://xacmlinfo.org/2015/03/09/openid-connect-support-with-resource-owner-password-grant-type/
[2] http://shanakaweerasinghe.blogspot.com/2016/01/get-user-profile-for-oauth-token-using.html