Здравствуйте!
Задача сделать сайт с api сервисами. С MVC работал. WEB API изучил вроде бы. Хотел применять аутентификацию на основе токенов (уклон на api вцелом). Но дойдя до реализации самой системы аутентификации и авторизации (ASP Identity) понял что не все так просто - простого выхода из учетки на основе токенов нет (поправьте если не прав).
Вопрос: как лучше реализовать такое сочетание?
Ведь в основном для MVC авторизация на основе кук. Планируется что API будет доступно согласно правам.
Сергей: Api должен быть доступен только зарегистрированным пользователям и имеющим определенные права-роли(в дальнейшем буду контролировать). То есть человек зарегистрировался. Затем если захотел доп функционал - оплатил - имеет доступ к методу API.
babaevmm: Если api вызывается со станицы сайта то нет CORS запроса и можно просто использовать Identity и все привычные в MVC атрибуты такие как [Authorize] т.е. нет необходимости писать что либо. Но если api захочется вызвать со страницы стороннего сайта или например из десктопного приложения то будет CORS запрос, соответственно нужно будет настраивать поддержку CORS в вашем приложении/сайте (https://www.asp.net/web-api/overview/security/enab... и реализовывать вход/выход через api посмотреть здесь metanit.com/sharp/aspnet_webapi/5.3.php.
Сергей: CORS или не CORS пока не интересует. Сейчас главный вопрос как это дело реализовать. Метанит читал не раз. Но, во-первых, примеры простые. Во-вторых, не все рабочие. Вцелом получается в источниках отдельно об web api написано, отдельно про аутентификацию написано, отдельно про MVC написано. А как организовать все вместе - нет. Если для реализации АПИ я хочу использовать авторизацию на основе токенов можно будет ли ее использовать для всего сайта (MVC)? И как лучше реализовать аутентификацию и авторизацию в апи? Сервисы , которые попадались мне на глаза, иногда для своих методов просят указывать что то типа ключа похожего на Guid. Для чего это может использоваться?
babaevmm: Конкретно с токенами не знаю, identity с токенами для web api работает, будет ли при этом работать для mvc надо пробовать. Однако если токены не обязательны то identity без поддержки CORS работает из коробки и для mvc и для web api при необходимости настраиваем CORS.
Создаете новый проект ASP.Net, выбираете шаблон SPA, указываете индивидуальные учетные записи и там автоматом вам и MVC и WebAPI и Bearer token авторизация будет.
babaevmm: для написания SPA приложений, в шаблоне уже есть настроенная авторизация, по кукисам и авторизация по токену (для SPA приложений). Те. пользователь авторизируется на сайте, и может получить токен для доступа к WebAPI.