Как получить токен на предъявителя для доступа к API из приложения MVC

Мой пользовательский поток выглядит следующим образом...

  1. Пользователь запрашивает защищенный ресурс.
  2. Пользователь перенаправлен к провайдеру аутентификации (например, Google)
  3. Пользователь перенаправляет обратно в приложение ASP.Net MVC, которое использует проверку подлинности cookie.

Это прекрасно работает, и, следуя примеру приложения MVC из примеров IdentityServer, я вижу список заявок для моего пользователя.

Итак, главная страница моего приложения отображается с использованием MVC, у меня есть другие ресурсы, которые авторизуются через авторизацию ресурсов, и это прекрасно работает.

Следующая часть моего приложения - это API. Скажем так api.domain.com/stockquote

Это должно быть доступно только авторизованным пользователям моего приложения и не должно быть общедоступным.

Я успешно создал приложение Angular JS с Identity Server и понимаю, что при возвращении токена я могу получить значение /id_token из URI сохраните его в localstorage, а затем используйте его для формирования заголовка авторизации для API, например Authorization=Bearer {token}, Снова работает красиво.

Однако теперь я прошел проверку подлинности в своем приложении MVC. Как получить этот токен и поместить его в локальное хранилище, чтобы я мог создать заголовок для своих вызовов API?

  • Можно ли как-нибудь извлечь его из куки?

  • Является ли хорошей идеей вывести его в поток HTML, чтобы JS мог взять его и поместить в локальное хранилище (догадываясь сейчас).

  • Могу ли я использовать конечную точку токена, чтобы каким-то образом получить этот токен?

1 ответ

Одним из способов справиться с этим может быть изменение способа аутентификации. Вместо обработки обратного вызова в MVC на стороне сервера, обрабатывайте его в JavaScript. Затем токен доступен для хранения в локальном хранилище. Это может быть невозможно, если вы делаете запросы на стороне сервера, которая также использует токен.

Другие вопросы по тегам