OAuth 访问令牌是不是包含 JWT 令牌之类的角色

Posted

技术标签:

【中文标题】OAuth 访问令牌是不是包含 JWT 令牌之类的角色【英文标题】:Do OAuth access tokens contain roles like JWT tokensOAuth 访问令牌是否包含 JWT 令牌之类的角色 【发布时间】:2016-12-12 09:17:49 【问题描述】:

关于使用 OAuth 2.0、OWIN 和 JWT(JSON Web 令牌)令牌对 ASP.NET Web API v2 进行身份验证和授权访问,我已经经历了几个 samples/tutorials。我喜欢 JWT 令牌的一件事是用户所属的角色包含在令牌本身中。根据分配给持有令牌的用户的角色,我可以允许/拒绝访问这样的 API 方法..

public class TestsController : ApiController

    [Authorize(Roles = "Admin")]
    [HttpGet]
    [Route("getdatetime")]
    public IHttpActionResult GetDateTime()
    
        return Ok(String.Format("The current Date/Time is 0", DateTime.Now));
    

我查看 OAuth 令牌的原因是我无法找到一个示例来说明如何实现 JWT 刷新令牌。但是,我有一些 examples 关于如何实现 OAuth 刷新令牌的信息,并且可能不得不走这条路。既然如此,我想知道 OAuth 令牌是否也可以包含 role 信息,例如 JWT 令牌。

【问题讨论】:

【参考方案1】:

我假设你的意思是访问令牌作为 Oauth 令牌,所以 OAuth2.0 Spec 本身并不强制访问令牌的任何格式,所以你可以使用任何你喜欢的格式,无论是随机唯一字符串还是 json 字符串。

因此,您可以很好地将 JWT Token 用作 OAuth Access Token,并在发布它们时设置必要的声明(角色)。

希望有帮助!

【讨论】:

以上是关于OAuth 访问令牌是不是包含 JWT 令牌之类的角色的主要内容,如果未能解决你的问题,请参考以下文章

如何在不访问身份验证服务器的情况下验证 OAuth2 访问令牌 (JWT)

JWT 是不是总是需要访问令牌和刷新令牌?

如何基于使用 Oauth2 协议的身份验证改进 JWT 访问令牌和刷新令牌?

如何以管理员用户身份撤销用户的访问令牌和刷新令牌?在 Oauth2 中使用 JWT

Spring OAuth/JWT 从访问令牌中获取额外信息

带有加密 JWT 访问令牌的 Spring Boot OAuth2