AWS API Gateway аутентификация + авторизация
Я создал конечную точку в API Gateway и пытаюсь реализовать разные уровни авторизации на основе политик. До сих пор я создал 2 группы пользователей cognito ('user' и 'admin') и установил роль пользователя arn для политики пользователя IAM arn, а роль администратора arn для администратора политики IAM arn.
Пользовательская политика выглядит следующим образом (ради теста они ничего не могут вызвать):
"Effect": "Deny",
"Action": "execute-api:*",
"Resource": "arn:aws:execute-api:eu-west-1:xxxx/*/GET/user/*"
Политика администратора выглядит следующим образом (администратор должен иметь возможность вызывать GET /user/blabla
:
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"arn:aws:execute-api:eu-west-1:xxxx:xxxx/*/GET/user/*"
]
После настройки политик и групп пользователей и групп cognito я создал авторизатор пула пользователей cognito в API Gateway и установил авторизатор на всех конечных точках (Resources --> select your resource --> Method Request --> Authorization
).
Пока все хорошо (о боже... дерьмо собирается ударить по фанату;))! Я попытался вызвать конечные точки с помощью Postman после того, как я получил idToken из Cognito для, скажем, пользователя A, который является членом группы пользователей. Этот пользователь вообще не должен вызывать какую-либо конечную точку, но это не работает. Когда я не устанавливаю Authorization
заголовок я получаю ожидаемый Not authorized
сообщение. Когда я декодирую токены JWT, я могу подтвердить, что роли соответствуют ожидаемым. По сути, я чувствую, что аутентификация работает, но роли не проверяются автоматически (авторизация).
И как всегда, документация AWS + поддержка довольно плохи (очень вежливо сказать, что это просто ужасно). Так может кто-нибудь пролить свет на эту тему?