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