#amazon-web-services #aws-api-gateway #amazon-cognito
Вопрос:
У меня есть экземпляр шлюза API, реализованный для использования потока учетных данных клиента с авторизатором Cognito. Он был развернут с использованием terraform, поэтому в нем могут отсутствовать специальные разрешения, созданные консолью. Я могу эффективно получить токен для своего клиента от cognito:
curl -X POST https://<my domain>.auth.us-east-1.amazoncognito.com/oauth2/token
-H 'content-type: application/x-www-form-urlencoded'
-H 'authorization: Basic <client id secret>'
-d 'client_id=2cj63ehbddvn4kcrvju07e3gpramp;grant_type=client_credentialsamp;scope=lapse/lapse-score'
И когда я поместил содержимое этого жетона в jwt.io, я получаю следующее:
{
"sub": "2cj63ehbddvn4kcrvju07e3gpr",
"token_use": "access",
"scope": <my scope>,
"auth_time": 1623176330,
"iss": "https://cognito-idp.us-east-1.amazonaws.com/<my pool id>",
"exp": 1623179930,
"iat": 1623176330,
"version": 2,
"jti": "097af453-9f91-4e2e-ad2f-15a1d8de4b7d",
"client_id": "<my client id>"
}
Однако, когда я передаю его своему авторизатору, я получаю сообщение следующего содержания {"message":"Unauthorized"}
:
curl -X GET https://<my api gateway>.execute-api.us-east-1.amazonaws.com/example/test
-H "Authorization: Bearer $TOKEN"
Это можно воспроизвести, поместив тот же токен в поле проверки авторизатора в пользовательском интерфейсе консоли. Регистрация для авторизатора просто читается:
Starting authorizer: <my authorizer> for request: 456b0b76-d4c6-45de-8d3d-692502ad93f0
Unauthorized request: 456b0b76-d4c6-45de-8d3d-692502ad93f0
Есть ли способ гарантировать, что авторизатор сможет идентифицировать мой токен client_credentials? Можно ли улучшить ведение журнала, чтобы лучше отладить это?