首先,需要在AWS服务中创建一个自定义作者器(Custom Authorizer)来验证JWT令牌。通过此服务,AWS可以对JWT令牌进行验证并自动执行验证逻辑。
接下来,需要为HTTP API Gateway配置自定义作者器。在Gateway的控制面板中进入API设置,选择“安全性”标签,然后单击“自定义作者器”下拉列表中的“新建自定义作者器”按钮。
然后,在创建自定义作者器的页面中,可以选择从现有Lambda函数或从头开始创建函数进行操作。此处示例使用一个现有的Lambda函数,该函数负责获取并验证JWT令牌。
import jwt
import json
def verify_token(auth_token:str):
# 从配置文件中获取JWT密钥
secret='your_secret'
# 解析JWT令牌
try:
payload=jwt.decode(auth_token,secret,algorithms='HS256')
return {
'statusCode':200,
'isAuthorized':True,
'principalId':payload['sub']
}
except:
return {
'statusCode':401,
'isAuthorized':False
}
def handler(event,context):
# 获取JWT令牌
auth_token=event['headers']['Authorization']
auth_token=auth_token.split(' ')[-1]
# 验证JWT令牌
auth_result=verify_token(auth_token)
return auth_result
在设置自定义作者器之后,可以将其部署到生产环境中。此时,所有请求都将通过自定义作者器进行验证并根据结果获取授权。
在HTTP API Gateway中使用JWT验证时,需要在每个资源或每个方法的请求中包含JWT令牌。此例中,我们使用Authorization头来传递JWT令牌。
import requests
JWT_TOKEN='your_jwt_token'
headers={
'Authorization':'Bearer {}'.format(JWT_TOKEN)
}
response=request