Авторизатор Cognito выдает {«сообщение»: «несанкционированное»}

#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? Можно ли улучшить ведение журнала, чтобы лучше отладить это?