WSO2隐式流不返回id_token

时间:2017-02-02 22:24:40

标签: wso2 wso2is openid-connect

我正在尝试使用WSO2中的OpenID Connect服务提供商从自定义Web应用程序验证用户身份。我正在关注this article的答案,并添加了Nuget包Thinktecture.IdentityModel.Client。我的代码与链接的文章非常相似:

 var client = new OAuth2Client(new Uri(serviceProviderAuthorizeUrl));

        var url = client.CreateImplicitFlowUrl(
            clientId,
            redirectUri: redirectUrl,
            scope: scope,
            nonce: Guid.NewGuid().ToString());

        Response.Redirect(url);

网址为:https://{wso2_url}/oauth2/authorize?client_id={my_client_id}&response_type=token&scope=openid&redirect_uri=https%3A%2F%2F{mydomain}%2F{my_app}%2FCallback.aspx&nonce=f0db4eac-18df-46f6-92f1-c28ba621596d

现在这确实有效,并返回一个access_token:https://{my_domain}/{my_app}/Callback.aspx#token_type=Bearer&expires_in=970&access_token=067e3366217798986912326a86abd92f

我的问题是我不知道用户是谁。此外,这个WSO2 article表明,如果我传递一个response_type:id_token,我应该能够解码响应,并通过使用“sub”属性找出用户是谁,但我没有得到id_token响应。上面的代码创建了一个带有response_type令牌的url。只需更改response_type就会出错。如何在WSO2中使用隐式流并获取id_token响应?

我按照article进行了WSO2的配置。我目前检查了Implicit和Client Credential。

2 个答案:

答案 0 :(得分:0)

确保将这些作为查询参数。

response_type=id_token
client_id=xxxxx
redirect_uri=http://xx.com/xx/x
nonce=xxxx
scope=openid

答案 1 :(得分:0)

确保您传递打算用于Idp(WSO2)的范围,以了解它需要返回哪些数据。确保您的范围 scope = openid。