Используя OAuth2 Implicit Flow(IdentityServer4), должны ли пользователи повторно вводить пароль при каждом истечении срока действия маркера доступа?

Мне нужно реализовать авторизацию / аутентификацию для клиентского веб-приложения Angular2 для связи с сервером ресурсов (WebApi).

Я изучаю IdentiyServer4 и выбираю тип гранта / поток. ВОТ

  1. Предоставление учетных данных пароля владельца ресурса (что мы используем сейчас.) "Это так называемая" неинтерактивная "аутентификация, которая обычно не рекомендуется".
  2. Код авторизации и гибрид <- решение для неявного потока, не позволяющее обновлять токены (кажется мне довольно сложным. Но так ли это?)
  3. Неявный поток - рекомендуется для SPA везде, где я смотрю. Но не поддерживает Обновить токены..

С неявным потоком, как мне не требовать, чтобы пользователь SPA вводил пароль каждые, скажем, 3600 секунд? Рекомендуемое время жизни access_token. Я предполагаю, что есть что-то, чего я не понимаю о получении нового URL авторизации.

Ресурсы, на которые я смотрел.

Спасибо за ответ, Скотт. У меня есть кое-что почитать.

1 ответ

Решение

При использовании неявного потока вы все равно можете использовать собственные времена жизни файлов cookie (т. Е. Более 3600 секунд). Чтобы обойти истечение срока действия маркеров доступа, вы можете использовать тот факт, что пользователь все еще проходит проверку подлинности в IdentityServer для получения другого токена доступа без необходимости обновления токенов.

Клиент IdentityModel OpenID Connect JS делает это, вызывая событие непосредственно перед истечением срока действия маркера доступа и используя iframe, чтобы сделать новый запрос аутентификации для IdentityServer. Если пользователь все еще вошел в IdentityServer (который имеет другой, как правило, более долговечный cookie, чем ваше собственное клиентское приложение), то IdentityServer отправляет обратно свежие токены, как обычный запрос аутентификации. Это происходит в фоновом режиме без взаимодействия с пользователем и без прерывания.

Проверьте automaticSilentRenew функциональность в этой библиотеке для специфики реализации.

Кстати, типы неявного, авторизационного кода и гибридного предоставления, в случае IdentityServer, являются типами предоставления OpenID Connect. Ресурсы, относящиеся к версиям OAuth, могут не относиться к вашему варианту использования.

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