Как получить токен на предъявителя для доступа к API из приложения MVC
Мой пользовательский поток выглядит следующим образом...
- Пользователь запрашивает защищенный ресурс.
- Пользователь перенаправлен к провайдеру аутентификации (например, Google)
- Пользователь перенаправляет обратно в приложение 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. Затем токен доступен для хранения в локальном хранилище. Это может быть невозможно, если вы делаете запросы на стороне сервера, которая также использует токен.