Токен носителя в контроллере MVC для доступа к веб-API

У меня есть два проекта: MVC, Web Api

В проекте веб-API я использую аутентификацию токена носителя. Срок действия этого токена истекает через 24 часа. В моем проекте MVC я хотел бы вызвать проект Web API через контроллер MVC (сервер-сервер). Как лучше всего:

  1. Получить токен
  2. Продлить токен через 24 часа (или по истечении срока действия)
  3. Вызов безопасного метода действия

Моя идея состояла в том, чтобы использовать WebClient, но я не был уверен, что есть лучший способ сделать это.

Я также не настроен на использование токенов на предъявителя. Но нужен надежный способ аутентификации как сервера на сервере, так и клиента (angularjs) на сервере (api).


person TheWebGuy    schedule 10.06.2015    source источник
comment
Тайсер Джуде из bitoftech.net много писал на эту тему. Вы можете изучить его посты и образцы.   -  person Kevin Le - Khnle    schedule 10.06.2015


Ответы (1)


Поток OAuth для сервера на сервер:

  • ваш веб-сервер подключается к вашему серверу авторизации (в данном случае AS, включенному в хост веб-API) с общим секретом
  • AS (веб-API) возвращает токен на ваш веб-сервер
  • веб-сервер сохраняет токен, чтобы использовать его при следующих вызовах веб-API.

Что касается клиента к серверу, поток отличается:

  • когда пользователь использует ваше веб-приложение и ему необходимо получить доступ к веб-API, ваше приложение перенаправляет браузер на сервер аутентификации, где оно информирует пользователя о том, какие ресурсы (области действия) пытаются получить доступ к приложению, и запрашивает одобрение. Это перенаправление включает обратный вызов URL
  • если пользователь одобряет доступ, AS перенаправляет браузер на URL-адрес обратного вызова с некоторой информацией в строке запроса, которая включает токен
  • браузер проверяет URL-адрес и, если пользователь одобрил доступ, он использует токен в URL-адресе, чтобы запросить у сервера аутентификации токен Bearer.
  • если это SPA, браузер сохраняет маркер носителя и использует его для доступа к веб-API. Если это не SPA, токен обычно хранится в куки, чтобы не потеряться

Обработка истечения срока действия токена:

Маркер содержит информацию о сроке действия и обычно содержит маркер обновления. Вы можете использовать токен обновления, чтобы представить его в AS до истечения срока его действия, чтобы вам не нужно было запрашивать новый токен.

Примечания по конфигурации

Различные потоки должны быть настроены по-разному на сервере.

Первый поток для «сервер-сервер» использует общий секрет, чтобы напрямую вернуть токен бераре серверному приложению. В этом случае нет необходимости в одобрении пользователя, потому что в этом процессе нет пользователя.

Второй поток, от (не доверенного) клиента к серверу, требует авторизации пользователя, потому что ваше клиентское приложение будет получать доступ к некоторым ресурсам пользователя (владельца ресурса) от его имени, поэтому ему требуется его одобрение.

Есть и другие потоки, например, для доверенных клиентов, но в данном случае они не применимы.

Типичной реализацией всех этих вещей является dotnetopenauth. Он очень хорошо документирован и обрабатывает все мелкие детали за вас.

person JotaBe    schedule 10.06.2015
comment
Отлично, это мне очень помогло. Благодарю вас! - person TheWebGuy; 10.06.2015