У меня есть серверная часть webapi, которую используют несколько клиентских приложений. API защищен с помощью проверки подлинности jwt, он основан на следующем примере: а>. Поскольку я еще не очень хорошо разбираюсь во всех концепциях аутентификации на основе токенов, я мог бы использовать некоторые рекомендации в этом. Моя проблема в том, что мне нужно, чтобы мои приложения использовали один и тот же API, но ограничивали доступ для каждого приложения к определенной области или контроллеру.
В соответствии с примером я могу защитить методы в области с помощью:
[Authorize("Api")]
Политика добавляется при запуске с помощью
authOptions.AddPolicy("Api", new AuthorizationPolicyBuilder()
.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) // "Bearer" scheme
.RequireAuthenticatedUser().Build());
Для защищенных запросов от клиента у меня обычно есть приложение angular 2, которое просто добавляет jwt в заголовки следующим образом:
headers.append('Authorization', 'Bearer ' + jwt);
Я не знаю всей механики здесь, но я предполагаю, что когда запрашивается безопасный метод, украшение атрибута «Api» решает/ограничивает, какую политику следует использовать с определенным маршрутом в API.
Какова наилучшая практика и как мне расширить это для работы с разделами, доступными по отдельности?