与OAuth 2.0和JWT相关的一件令人困惑的事情是何时使用scopes和roles。
我认为一些混淆来自于ASP.NET Core中基于角色的授权的工作原理(这是我工作场所的主要语言/框架)。例如,如果我的JWT中有以下角色
{
"aud": "test",
"iss": "http://localhost:8080/auth/realms/test/",
"iat": 1585192274,
"nbf": 1585192274,
"exp": 1585196174,
"sub": "12345",
"roles": ["Admin", "SuperUser"]
}
我可以轻松地保护路由,而不需要做太多的工作,例如:
[ApiController]
[Route("api/v{version:apiVersion}/template/test")]
public class TestController : Controller
{
[HttpGet]
[Authorize(Roles = "Admin")]
public IActionResult Get()
{
return Ok("test");
}
}
我可以使用dotnet授权策略的作用域来实现与上述内容非常相似的功能,但我只想知道是否有关于何时使用scope或roles的指导,或者仅仅是偏好问题...
在任何OAuth/JWT相关的RFC中,我都找不到关于角色声明的参考资料,而作用域则被不断提及。