У меня есть веб-приложение ASP.NET MVC 5 (.NET Framework 4.5.2, , а не Core ), использующее аутентификацию ASP.NET Identity на основе файлов cookie.Пользователи могут войти в систему на Account/Login
, и в браузере установлен файл cookie.Я могу защитить действия с помощью атрибута Authorize
и даже указать, какие роли могут получить к нему доступ.Это все стандартные вещи из шаблона MVC 5.
Теперь мне нужно добавить API с несколькими контроллерами Web Api 2 (наследуя ApiController
), и я хочу использовать токены JWT, так как они оба будут называтьсяпользователями веб-приложения через запросы браузера, а также из внешних инструментов CLI.Я хотел бы использовать атрибут Authorize
с ролями, как я это делаю в контроллерах MVC.
Итак, в идеале, когда запрашивается действие ApiController, атрибут Authorize проверяет, существует ли допустимый сеанс cookie,если это так, и это соответствует ролям, то пользователю разрешено.Если в запросе отсутствует файл cookie (запрос http из среды без браузера), он проверит наличие JWT.Сгенерированная полезная нагрузка JWT будет содержать роли, в которых находится пользователь, поэтому промежуточное программное обеспечение должно иметь возможность считывать их с него и проверять доступ.
Я много гуглил, но почти все руководства дляASP.NET Core.