AWS Cognito - почему токен остается в силе даже при изменении пула пользователей или удалении пользователя (ядро .Net) - PullRequest
0 голосов
/ 26 августа 2018

Я новичок в AWS Cognito и о безопасности токенов. Я решил использовать AWS Cognito для майского приложения. Здесь я следовал руководству по моему веб-приложению и моему веб-интерфейсу.

https://dzone.com/articles/identity-as-a-service-idaas-aws-cognito-and-aspnet https://dzone.com/articles/identity-as-a-service-idaas-asp-net-core-api-and-a

Все отлично работает. Но когда я пытаюсь создать новый пул пользователей в AWS Cognito, а затем изменить настройки приложений для веб-приложения и веб-API для использования нового пула пользователей, я обнаружил нечто странное.

  1. (для веб-приложения). Пользователь по-прежнему может получить доступ к действию контроллера по старому токену, принадлежащему старому пулу пользователей, который использовался до того, как даже действие было помечено как [Авторизация]. Я не знаю, почему пользователь все еще может получить доступ со старым токеном, даже если в настройках приложения установлен новый пул пользователей. (Но пользователь не может получить доступ к веб-API, использующему новый пул пользователей, со старым токеном)

  2. (как для веб-приложения, так и для веб-API). Затем я удалил этого пользователя из старого пула пользователей и настроил веб-приложение и веб-API для использования старого пула пользователей. Я обнаружил, что Пользователь все еще может получить доступ как к действию в веб-приложении, так и к веб-API, даже если Пользователь был удален.

Я думаю, что это может быть что-то, чего мне не хватало в токене или настройке проверки. Кто-нибудь может предложить решение, чтобы это исправить?

1 Ответ

0 голосов
/ 27 августа 2018

Идентификационный токен, выданный AWS Cognito User Pool, является токеном JWT, подписанным AWS.После выдачи токен действителен в течение 1 часа.В течение этого 1 часа невозможно отозвать токен, поскольку он не имеет состояния.

Amazon Cognito генерирует две пары ключей RSA для каждого пула пользователей.Закрытый ключ каждой пары используется для подписи соответствующего идентификационного токена или токена доступа.Открытые ключи доступны по адресу в следующем формате:

https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json

Поскольку открытый ключ общедоступен, любой может проверить, является ли токен JWT подлинным и выпущенным AWS Cognito.

Однако для этого требовалось несколько вещей.

  1. Проверка кодировки токена JWT на соответствие стандарту JWT.
  2. Проверка издателя JWT, является ли он конкретнымПул пользователей (проверьте его идентификатор).
  3. Проверьте, является ли токен идентификатором токена (необязательно).
  4. Проверьте аудиторию токена (выдан ли он для определенного приложения).
  5. Проверка подписи токена (для этого нужен открытый ключ).
  6. Проверка истечения срока действия токена.

Эта информация уже является автономнойв строке токена JWT, правильно закодированной в соответствии со стандартом JWT.

Таким образом, даже пул пользователей Cognito удаляется, если существует действительный токен (<1 час после выдачи), он должен быть действительным, еслипроцесс проверки использует сохраненный открытый ключ для его проверки. </p>

...