Как изменить время истечения срока действия токенов доступа и удостоверений личности для пользовательских пулов AWS Cognito

Я не могу найти документацию, которая объясняет, если и как изменить время истечения срока доступа и токены идентификации для пользовательских пулов AWS Cognito.

Документация указывает, что по умолчанию истекает через 1 час после эмиссии.

Есть ли способ изменить время истечения срока действия?

Ответ 1

В настоящее время невозможно настроить для своего пула пользователей. Они настроены на один час для всех.

Ответ 2

Вы можете настроить срок действия токена из консоли Cognito General Settings/App Clients/{your app}/Show Details/Refresh token expiration (days)

https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

По умолчанию срок действия маркера обновления истекает через 30 дней после того, как пользователь вашего приложения войдите в свой пул пользователей. Когда вы создаете приложение для своего пула пользователей, вы можете установить для приложения срок действия маркера обновления (в днях) на любое значение от 1 до 3650.

Похоже, что в настоящее время для веб-клиента нет возможности выбрать что-то менее суток (что довольно странно).

Если вы используете Mobile SDK, тогда

https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

Mobile SDK для Android предлагает возможность изменить минимальное срок действия идентификатора и токенов доступа до значения от 0 до 30 минут. Смотрите метод setRefreshThreshold() CognitoIdentityProviderClientConfig в AWS Mobile SDK для Android Справочник по API.

Ответ 3

Cognito использует спецификацию OAuth 2.0. Чтобы обновить токен с истекшим сроком действия, вам нужно будет использовать значение Обновить токен, чтобы получить новый Id токен.

  1. Для аутентификации при запуске идентификатор пользователя и пароль собираются у пользователя и отправляются в Cognito.
  2. Вы получите два жетона. Один из них используется для "доступа" к API, а другой - для "обновления" по истечении срока доступа.
  3. Вам не нужно просить пользователя снова ввести идентификатор пользователя и пароль; вам просто нужно использовать токен "refresh".
  4. Вам не нужно хранить открытый текст пароля (который может создать угрозу безопасности), потому что токен "обновления" даст вам новый токен доступа.

Это действительно довольно просто. Дополнительная информация в документации Cognito для обновления токенов

Ответ 4

Я предполагаю, что вопрос заключается в том, как получить детальный контроль завершения сеанса Cognito. Есть способ сделать это. Но сначала давайте вспомним, как работает управление сессиями Cognito:

  1. Срок действия токенов истекает через час.
  2. Новый токен авторизации может быть запрошен при выдаче токена обновления.
  3. Через 1–30 дней Cognito не будет выдавать токен обновления - количество дней, настроенное для приложения, указано в настройках клиента приложения.

Так что же вы можете сделать, чтобы лучше контролировать продолжительность сеанса Cognito? Ответ заключается в том, чтобы вставить в стек http-запросов фильтр, который оценивает запрос - если пользователь по какой-либо причине должен выйти из системы, введите перенаправление 302 на конечную точку выхода из Cognito (и очистите также куки файлы сеанса).

Это то, что мы делаем в Kubernetes с Envoy (используя прокси), а также Spring. Он также позволяет подключать логику, которая немедленно аннулирует доступ к пользователю до истечения срока действия его токена доступа в течение 1 часа.

Видеть https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html