Зависит от того, насколько детализирован контроль над доступом к вашему API.
Разрешить или запретить сценарий
В некоторых случаях вы либо хотите полностью заблокировать кого-то или дать ему доступ ко всем вашим API. В этом сценарии «все или ничего» самый простой способ - использовать пулы пользователей Cognito самостоятельно для авторизации ваших пользователей. Пользовательские пулы Cognito просто используются для аутентификации пользователя (являются ли они теми, кем они его называют), а также для предоставления инструментов для упрощения регистрации и входа в систему.
Если пользователь проходит аутентификацию, вы можете пройти один из токенов, возвращаемых пулами пользователей cognito (токен идентификации) в API Gateway. Пока вы настроили свои методы api для использования авторизатора Cognito User Pools в API Gateway, этого будет достаточно, чтобы они приняли маркер идентификации в качестве авторизации для доступа к методам.
Fine- Grained Access
Однако в других случаях вам требуется более детальный контроль. Возможно, вы захотите, чтобы все прошедшие проверку пользователи имели доступ к определенному подмножеству ваших методов API, но только администраторы имели доступ к более ограниченным методам.
В этом случае вам также потребуется использовать Cognito Identity Pools, чтобы определить роли пользователей (например, UNAUTHENTICATED_USER, PAID_USER, ADMIN и c) и связанные с ними роли IAM , которые будут иметь политики, которые предоставляют им доступ, или запрещать им доступ к различным частям вашего API.
Затем вы устанавливаете авторизатор для ресурсов вашего шлюза API на AWS_IAM (вместо Cognito User Pools, как в примере «все или ничего» выше). API-шлюз будет использовать учетные данные роли, полученные из пула удостоверений Cognito, чтобы определить, есть ли у роли текущего пользователя разрешения на доступ к запрошенному ресурсу.
Например, возможно, ваша роль пользователя PAID_USER будет иметь следующий IAM роль прикреплена:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Effect": "Allow",
"Resource": [
"arn:aws:execute-api:*:*:fjfkdlsjflds/*"
]
},
{
"Action": "execute-api:Invoke",
"Effect": "Deny",
"Resource": [
"arn:aws:execute-api:*:*:fjfkdlsjflds/*/admin/*"
]
}
]
}
Это дает им доступ к вашему API, кроме методов (ресурсов) API, которые вы настроили в / admin / .
Я настоятельно рекомендую * * * * * * * * * * *> * * * * * * * * * * * * * * * * * * * * *.