У меня возникли проблемы с настройкой / использованием аутентификации на AWS ApiGateway.У меня уже есть лямбда-функция, настроенная с помощью кода, который получает модель аутентификации AWS, см. Ниже, которая в основном декодирует токен JWT и проверяет, может ли данный пользователь получить доступ к ресурсу:
{
"type": "TOKEN",
"authorizationToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjotMTU1LCJwcm9kdWN0IjoiQmlsbGlvblJ1biIsInBlcm1pc3Npb25fbGV2ZWwiOjEsInNhbHQiOiJzZWNyZXRfcGhyYXNlIn0.3gZUFITe8or2mPWBAZlOxdcGF6-ybykHVsMRsqoUI_8",
"methodArn": "arn:aws:execute-api:us-east-1:123456789012:example/prod/POST/{proxy+}"
}
См. Ниже пример выходных данных из документации ApiGateway.Первый - когда пользователь успешно подтвержден (разрешение предоставлено), а второй - когда пользователь не может подтвердить (разрешение отклонено):
{
"principalId": "users",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Effect": "Allow",
"Resource": "arn:aws:execute-api:REGION:AWS_ACCOUNT:example/prod/POST/{proxy+}"
}
]
},
"context": {
"user_id": XXX,
}
}
Разрешение отклонено:
{
"principalId": "users",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Effect": "Deny",
"Resource": "arn:aws:execute-api:REGION:AWS_ACCOUNT:example/prod/POST/{proxy+}"
}
]
}
}
Проблема заключается в следующем: каждый раз, когда я тестирую пользовательскую функцию авторизации, возвращаемое состояние равно 200 (вместо 401), и разрешение предоставляется (даже когда я отправляю неправильные токены).
Кроме того, я действительно чувствую, что он даже ничего не тестирует, хотя на экране видно, что функция пользовательской аутентификации включена.
Ресурс, показывающий пользовательский авторизатор
Внутренний ресурс
Пользовательский Авторизатор
Недопустимый токен
ДействительныйТокен
------- РЕДАКТИРОВАТЬ -------
Вот код, как я реализовал вывод:
def generate_policy(principal_id, effect, resource, context=None):
doc = {
'principalId': principal_id,
'policyDocument': {
'Version': '2012-10-17',
'Statement': [{
'Action': 'execute-api:Invoke',
'Effect': effect,
'Resource': resource
}]
}
}
if context:
doc["context"] = context
return doc
ИтакВы можете позвонить так, чтобы «разрешить»:
generate_policy("users", "Allow", method_arn, auth_info)
Или как это «отрицать»:
generate_policy("users", "Deny", method_arn)
-------- ИЗМЕНИТЬ СНОВА ------ Укажите весь мой код:
https://gist.github.com/hermogenes-db18/1ccf3eb8273f266a3fa02643dcfd39bd