Попытка реализовать OpenId Connect в веб-приложении, состоящем из следующих компонентов
- Поставщик удостоверений
- Сервер ресурсов
- Одностраничное приложение, действующее в качестве клиента.
Identity Provider и Resource Server - это одно и то же приложение.
SPA использует поток паролей для получения access_token
и сохраняет его в файле cookie. Хранение access_token
в cookie имеет потоков безопасности , но это другая история.
Проблема
access_token
срок действия выданного IdP истекает через 30 минут, и SPA необходимо обновить токен без повторного запроса учетных данных.
Решение
IdP возвращает refresh_token
вместе с access_token
.Всякий раз, когда SPA получает 401
с сервера ресурсов, он отправляет refresh_token
IdP и получает новый access_token
назад.
Проблема
Отправка refresh_token
в SPA плохая практика .
Одностраничное приложение (обычно реализующее неявное предоставление) ни при каких обстоятельствах не должно получать токен обновления.Причиной этого является чувствительность этой информации.Вы можете думать об этом как об учетных данных пользователя, поскольку токен обновления позволяет пользователю оставаться аутентифицированным по существу навсегда.Поэтому вы не можете хранить эту информацию в браузере, она должна храниться надежно.
Предлагаемое решение
Когда срок действия токена доступа истек, беззвучныйаутентификация может использоваться для получения нового без взаимодействия с пользователем, при условии, что сеанс единого входа пользователя не истек.
Я думаю, Тихая аутентификация не применима к потоку паролей, когда IdP иРесурс-сервер - это то же приложение.access_token
, выданный IdP, является только частью информации, которую можно использовать для авторизации на сервере ресурсов / IdP после истечения срока его действия. Как клиент может убедить IdP выдать новый access_token
?(без отправки refresh_token
)
Найдена angular-oauth2-oidc библиотека, которая использует refresh_token
для обновления access_token
.
Каков наилучший метод / решение в этом случае для продления access_token
?
технические данные
- Поставщик удостоверений - ASP.NETБиблиотека Core + Openiddict.
- SPA - приложение AngularJs.