Реализация аутентификации и авторизации на основе ролей в службе веб-API ASP.NET MVC и клиентской архитектуре MVC
Я испытываю затруднения в выборе подхода при реализации сценария Аутентификации / Авторизации для моего проекта архитектуры Web API (Сервис) - MVC (клиент). Несмотря на то, что я реализовал аутентификацию на основе пользовательских токенов в проекте Web API, яМне трудно понять, где именно я должен реализовать авторизацию (в клиенте или в самом API).
Обзор архитектуры:
Проекты Решение - || ___ Служба REST на основе веб-API ASP.NET (независимо размещается на IIS в M / C 1) |
| __. Клиент на основе ASP.NET MVC (независимо размещается на IIS в M / C 2, использующий REST-сервис) |
| ___ Приложение-клиент для смартфона (потребляет услугу REST)
Уже реализована аутентификация:
Аутентификация на основе токенов в Web API (с помощью обработчика сообщений) - которая генерирует токен с шифрованием SHA1 для аутентифицированного пользователя, который должен быть частью каждого заголовка http-запроса для аутентификации.
(Токен = имя пользователя + IP-адрес пользователя)
Защищенный с помощью SSL HTTP-запрос. (Опять же, с помощью обработчика сообщений)
Текущие проблемы:
На каком уровне должна осуществляться авторизация?Как сохранить роль пользователя на клиенте? Используете куки? или Добавление информации о роли в сам токен (что может добавить накладные расходы на API для расшифровки информации и дополнительные вызовы БД для получения разрешений, связанных с этой ролью)Как маркер аутентификации должен сохраняться в сеансе клиента?Поскольку мое приложение является приложением SPA MVC, каков наилучший способ включить токен аутентификации в качестве части каждого вызова AJAX, который я выполняю в API?Я надеюсь я'я не делаю что-то неправильно, принимая во внимание всю концепцию аутентификации / авторизации. Таким образом, яБуду признателен за любой альтернативный подход / предложение.