Передайте аутентифицированного пользователя в SPA, не заставляя его повторно вводить свои учетные данные - PullRequest
1 голос
/ 21 марта 2019

Это мои текущие настройки:

  • IdentityServer4
  • API (аутентификация на предъявителя)
  • Страница SPA (неявный поток oidc-клиента перенаправлен на интерфейс быстрого запуска IdentityServer4)
  • Родное приложение (написано в C #)

У нативного приложения уже есть учетные данные пользователя. Я хочу предоставить веб-ссылку на страницу SPA из собственного приложения, но не хочу заставлять пользователя снова входить в систему при переходе в Интернет. Вместо этого я хочу переместить их текущий сеанс на веб-страницу.

Можно ли "внедрить" токен доступа в oidc-клиент? (используя фрагмент URL). Или есть какой-то другой способ или способ заставить это работать?

1 Ответ

2 голосов
/ 21 марта 2019

В общем случае ответ должен быть следующим: вы на неправильном пути .
Смотрите: вы используете поток пароля владельца ресурса в своем родном приложении, и это неправильно. Он не интерактивный, то есть не только IdP имеет доступ к учетным данным. Обычно такой поток рекомендуется для целей тестирования и т. Д., А не для общего использования. Одно огромное ограничение неинтерактивного потока состоит в том, что он не создает сеанс пользователя. Если вы переключите свое собственное приложение в интерактивный поток, такой как Поток кода с расширением PKCE , он создаст сеанс. После этого ваше другое приложение будет автоматически аутентифицироваться всякий раз, когда cookie-файл сеанса для сервера Identity будет активен.
NB. Если вы не хотите улучшать свою архитектуру, вы можете делать все, что захотите, включая предоставление токена в ссылка на сайт. Этот токен все еще будет действителен для вызова API. Но это не будет неявным потоком, у вас не будет ни сеанса, ни возможности использовать функцию тихого обновления.

...