Вы должны иметь возможность использовать один Lambda Authorizer для защиты обеих конечных точек на основе области действия токена.Вы можете использовать запрос на основе Enhanced Lambda Authorizer
. Передача токена доступа в заголовок Authorization
и проверка подписи и срока действия токена доступа перед обработкой запроса.
Пример объекта Event
, полученного авторизатором:
{
"methodArn": "arn:aws:execute-api:us-east-1:XXXXXXXXXX:xxxxxx/dev/GET/hello",
"resource": "/hello",
"requestContext": {
"resourceId": "xxxx",
"apiId": "xxxxxxxxx",
"resourcePath": "/hello",
"httpMethod": "GET",
"requestId": "9e04ff18-98a6-11e7-9311-ef19ba18fc8a",
"path": "/dev/hello",
"accountId": "XXXXXXXXXXX",
"identity": {
"apiKey": "",
"sourceIp": "58.240.196.186"
},
"stage": "dev"
},
"queryStringParameters": {},
"httpMethod": "GET",
"pathParameters": {},
"headers": {
"cache-control": "no-cache",
"x-amzn-ssl-client-hello": "AQACJAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
"Accept-Encoding": "gzip, deflate",
"X-Forwarded-For": "54.240.196.186, 54.182.214.90",
"Accept": "*/*",
"User-Agent": "PostmanRuntime/6.2.5",
"Authorization": "hello"
},
"stageVariables": {},
"path": "/hello",
"type": "REQUEST"
}
Вы можете идентифицировать запрос по комбинации event.requestContext.resourcePath
и event.requestContext.httpMethod
.В зависимости от типа запроса и области действия, определенных в токене, вы можете вернуть политику «Разрешено» или «Отклонено».Если, например, запрос предназначен для создания конечной точки пользователя, но токен доступа не включает в себя область действия create:user
, вы вернете политику для отклонения запроса.