Почему Amazon Cognito не возвращает поле аудитории в токенах доступа? - PullRequest
0 голосов
/ 05 ноября 2018

Когда Amazon Cognito выдает токены доступа, в него не включается поле aud.

В документации для токенов Cognito поле aud указано для токенов id (всегда устанавливается на то же значение, что и client_id), но не для токенов доступа.

соответствующий раздел спецификации JWT гласит:

Если принципал, обрабатывающий претензию, не идентифицирует себя со значением в претензии "aud", когда эта претензия присутствует, то JWT ДОЛЖЕН быть отклонен.

Итак, что здесь происходит. Кто прав? Это проблема безопасности?

Я заметил, что раздел iss токена относится к моему пулу пользователей, и его нельзя было подделать, поскольку он подписан Amazon, поэтому я думаю, что я должен быть в безопасности

OAuth 2 и JWT очень сбивают с толку, поэтому я хотел получить больше мнений.

1 Ответ

0 голосов
/ 05 ноября 2018

Из моего чтения RFC я не думаю, что AWS делает что-то не так, в частности (обратите внимание на мое выделение):

Если принципал, обрабатывающий претензию, не идентифицирует себя со значением в претензии "aud" , когда эта претензия присутствует , JWT ДОЛЖЕН быть отклонен.

Использование этого требования ДОПОЛНИТЕЛЬНО .

Что, на мой взгляд, означает, что с AWS все в порядке, потому что он просто пропускает утверждение в случае токена доступа, но является , идентифицирующим себя (по-своему), устанавливая его в client_id когда он делает запрос на токене id.

Следует отметить, что сам токен доступа кодирует и обеспечивает защиту аудитории ; в том случае, если вы будете против API-интерфейсов AWS, он будет принудительно получать только те ресурсы, которые доступны для client_id / scope, для которого он был выпущен.

...