3

当 OAuth 客户端从身份服务器获取 JWT 令牌时,有什么方法可以吗?

我担心当用户获取 access_token 并尝试使用 base64 对其进行解码时,用户可以修改令牌字符串。

我的场景是:我有两个门户网站 A 和 B,它们都集成了 Thinktecture 身份服务器。用户 A 只能使用“role:portalA”声明访问门户 A,但如果用户 A 尝试登录门户 A 并获取 access_token,则用户 A 将“role:portalB”添加到 access_token 中,然后使用编码再次base64。然后修改后的access_token传递给Portal B,我担心用户A可以访问Portal B。所以我必须再次检查access_token到身份服务器。这是验证此 access_token 的任何方法吗?或者这种情况不会发生?

4

2 回答 2

4

我相信 Thinktecture Identity Server 在 (baseurl + "/core/accessTokenValidation?token=" + access_token) 有一个端点。

例子:

GET request to: http://localhost:3333/core/accessTokenValidation?token=aEdhoi23hlv2khdf2lkhfv4pv....

如果 access_token 有效,则应返回 200 响应,否则将返回 JSON 错误消息 {"error":"invalid_token"} 和 4XX 响应。

您应该调用此服务来验证令牌,然后缓存响应。

看一下源码:https ://github.com/IdentityServer/IdentityServer3/blob/master/source/Core/Endpoints/Connect/AccessTokenValidationController.cs

于 2014-05-29T17:32:00.920 回答
4

Thinktecture IdentityServer3 有不同的端点。

官方文档中的更多详细信息: https ://identityserver.github.io/Documentation/docs/endpoints/accessTokenValidation.html

例子:

GET /connect/accesstokenvalidation?token=<token>

成功的响应将返回状态代码 200 以及令牌的相关声明。不成功的响应将返回带有错误消息的 400。

于 2015-07-09T14:46:11.613 回答