Реализация аутентификации и авторизации на основе ролей в службе веб-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?

Я надеюсь я'я не делаю что-то неправильно, принимая во внимание всю концепцию аутентификации / авторизации. Таким образом, яБуду признателен за любой альтернативный подход / предложение.

Ответы на вопрос(2)

Ваш ответ на вопрос