Я достаточно хорошо разбираюсь в большинстве вещей, связанных с OAuth 2.0 и JWT, но одна вещь, которая все еще немного сбивает с толку, - это когда и когда использовать области действия или роли.
Я думаю, что некоторая путаница возникает из-за того, как авторизация на основе ролей работает в 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, но я просто хотел бы знать, есть ли какое-то руководство о том, когда / когда использовать область действия или роли, или это просто вопрос предпочтений ...
Я не могу найти много ссылок на утверждения ролей в каких-либо RFC, связанных с OAuth / JWT, тогда как области действия упоминаются повсюду.