如何在AWS中更改API授权器中的错误信息?



我使用Lambda为我的项目创建api。我开始使用API授权器进行令牌基础身份验证。下面是我的代码:

import json, jwt
from datetime import datetime
def lambda_handler(event, context):
timestamp = datetime.timestamp(datetime.now())

decode_data=jwt.decode(jwt=event['authorizationToken'], key="", algorithms=["RS256"], options={"verify_signature": False})
auth = 'Deny'
if timestamp < decode_data['exp']:
if decode_data['custom:user'] == 'Customer':
auth = 'Allow'

authResponse = { "principalId": "abc123", "policyDocument": { "Version": "2012-10-17", "Statement": [{"Action": "*", "Resource": "*", "Effect": auth}] }}
return authResponse

我将此授权器与另一个Lambda应用于验证。所以,当令牌有效时,它工作得很好,但是当令牌过期时,它给出以下消息:

{
"Message": "User is not authorized to access this resource with an explicit deny"
}

现在我想定制这个错误和它的状态码。怎么做呢?任何建议。

您所看到的确实是由API网关生成的错误。API Gateway将调用lambda来验证授权,然后返回一个策略,说明允许用户做什么或不允许用户做什么。API Gateway然后使用此策略来确定允许您对API的访问权限。

由于您正在返回显式的DENY,因此您将从AWS获得此默认错误消息。如果你想改变这个错误消息,你可以尝试返回一个不同的结果(例如,允许没有操作或没有资源,如果这是被接受的响应)。

如果你正在使用新的HTTP API (API Gateway V2)和有效负载格式V2,你也可以使用他们所谓的简单响应,你根本不需要返回一个策略。关于这一点的更多信息可以在这里找到:与AWS Lambda授权器一起使用HTTP api.

相关内容

最新更新