WSO2隐式流不返回id_token

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSO2隐式流不返回id_token相关的知识,希望对你有一定的参考价值。

我正在尝试使用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。

答案

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

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

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

以上是关于WSO2隐式流不返回id_token的主要内容,如果未能解决你的问题,请参考以下文章

OIDC 隐式流 - 重定向 uri 长度

自定义声明包含在隐式流中,但不包含在 PKCE 流中

如何让用户使用隐式流登录?

WSO2 IS:服务提供商的访问控制策略

如何使用 Spring 从 id_token 创建用户?

如何保护来自iframe的Oauth2隐式流