任何人都知道为什么如果我调用/ 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"}
{"sub":"asela@carbon"}
这样的JSON作为响应而没有所有其他声明。WSO2 IS中定义的服务声明是默认声明。谢谢你的帮助。
答案 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。
希望这会有所帮助。
答案 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