Какие токены JWT следует сохранить для последующего использования? - PullRequest
4 голосов
/ 17 января 2020

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

Соответствующее приложение на asp. net 4.5 MVC и не относится к. NET Core. Единственная информация о AWS Cognito, которую я могу найти в Интернете, относится к. NET core.

Я понимаю значение каждого типа токена, как описано здесь: https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html#amazon -cognito-user-pool -using-id-token

Я также понимаю необходимые шаги для проверки JWT: https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html

Мой вопрос заключается в том, что JWT нужно быть проверенным и на каком этапе?

Пример 1.
Пользователь входит в систему, после входа он возвращается с токеном Access, ID и Refre sh.
Do all токенов необходимо проверить на этом этапе или только токен доступа?

Проверяется ли токен refre sh только перед его использованием (для получения новых токенов доступа и идентификаторов) ?
ИЛИ Должны ли все токены быть проверены на любой авторизованный запрос контента?

Какие токены должны храниться в Cook FormsAuthentication Cook ie для использования позже? Мы используем стандартный шаблон [Authorize] в asp. net.

Ответы [ 2 ]

2 голосов
/ 27 января 2020

Вопрос: Нужно ли проверять все токены на этом этапе или только токен доступа?

Ответ: Проверка на токене доступа всегда выполняется только.

Refre sh сам токен не нуждается в проверке. Он используется только для получения набора sh наборов токенов ID и токенов доступа.

Вопрос: Какие токены должны храниться в Cook-файле FormsAuthentication ie для последующего использования ?

Ответ: Это спецификация c для реализации. Не существует правила, по которому токен должен быть сохранен.

Если требуется просто знать адрес электронной почты или номер телефона пользователя, можно сохранить только маркер идентификатора.

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

Если необходимо разрешить пользователю доступ к ресурсу в течение 30 дней без запроса пароля, необходимо сохранить токен refre sh. .

0 голосов
/ 22 января 2020

Рекомендуемый подход заключается в проверке токена доступа, поскольку он включает в себя как аутентификацию, так и авторизацию. Вы должны проверить токен доступа до предоставления доступа к защищенным ресурсам.

Идентификатор токена содержит утверждения (информацию) аутентифицированного пользователя. Его также можно использовать для проверки, но при этом токены доступа более эффективны, поскольку вы можете создавать области для определения разрешений и ролей. Токен доступа также является входом для многих пользовательских операций API Cognito.

AWS Cognito следует протоколу OpenID Connect, который построен поверх Oauth2, для которого эти терминологии происходят.

Ссылка sh токен - это долгоживущий токен для извлечения новых краткосрочных токенов (id токен, токен доступа). В настоящее время в реализации Cognito срок действия более коротких токенов истекает каждые 1 час, и токены refre sh настраиваются в пуле пользователей. В случае, если токен refre sh становится недействительным / срок его действия истек, попытки получить новые токены с коротким сроком действия потерпят неудачу, поэтому вам не нужно самостоятельно проверять токен refre sh.

Вы можете сохранить refre sh токен (в каком-то сеансе), чтобы помочь с поиском нового доступа, id токены без повторной аутентификации. Вы также можете сохранить токен доступа, чтобы токен sh использовался только один раз в час (по истечении срока действия токена доступа), чтобы предотвратить выдачу ненужных токенов и переходов в Cognito. Хранение идентификатора токена действительно соответствует вашему случаю использования, если вы заинтересованы в сохранении пользовательских утверждений (информация пользователя хранится в JWT идентификатора токена).

...