可能是由于以下原因导致API网关JWT Authorizer返回401:
在AWS环境中,可以通过出现以下代码的方式验证API Gateway是否成功调用其JWT Authorizer:
def token_auth(event, context):
** # Code to parse and validate JWT goes here **
# Return the Allow policy for the root resource with an empty principalId to bypass security
policy = AuthPolicy(principal_id='', aws_account_id='account-id', region='us-west-2', rest_api_id='rest-api-id', stage='stage')
policy.allow_all_methods()
return policy.build()
class AuthPolicy(object):
# omitted code…
def _get_empty_statement(self):
statement = {
'Action': 'execute-api:Invoke',
'Effect': 'Deny',
'Resource': self._method_arn
}
return statement
def _get_template(self):
policy = {
'principalId': self._principal_id,
'policyDocument': {
'Version': '2012-10-17',
'Statement': []
}
}
return policy
# omitted code…
def allow_all_methods(self):
self.add_method('Allow', '*', '*', '*')
# omitted code…
def add_method(self, effect, verb, resource, conditions):
statement = self._get_empty_statement()
statement['Effect'] = effect
if conditions is None:
statement['Condition'] = {}
else:
statement['Condition'] = conditions
statement['Action'] = 'execute-api:Invoke'
statement['Resource'] = self._method_arn
if verb != '*':
statement['Resource'] += '/' + verb
if resource != '*':
statement['Resource'] += '/' + resource
self._statements.append(statement)
如果API Gateway JWT Authorizer测试成功,但调用API时返回401错误,则可以尝试清除API Gateway中的缓存
上一篇:api网关jwt
下一篇:api网关jwt续签