Add support for authorizer REQUEST type
Description
AWS gateway supports the use of Lambda authorizers to perform authorization (grant access to certain resources) based on a given authentication strategy (OpenID connect, basic auth, SAML etc). AWS Gateway offers two kinds of authorizers: REQUEST & TOKEN.
TOKEN authorizers receive the bearer token, like a JWT or a OAuth token.
REQUEST authorizers receive a combination of headers, query strings, stage variables and context variables.
Zappa only supports TOKEN authorizers, which is quite limiting since some authentication schemes may depend on information provided in the request.
This PR adds support for REQUEST authorizers. The authorizer config now takes a new type field as well as an identity_sources object which can be a combination of the various request expressions needed for the REQUEST authorizer (header, query string, stage variable, or context). We don't explicity support multi stage variable since fields can appear multiple times e.g.
"authorizer": {
"type": "REQUEST",
"function": "auth.lambda_handler",
"identity_sources": {
"headers": ["Authorization", "Host"],
"stage_variables": ["prod", "dev"]
},
}
For backwards compatibility, if the type of an authorizer is not specified, it defaults to TOKEN.
GitHub Issues
https://github.com/zappa/Zappa/issues/847 https://github.com/Miserlou/Zappa/issues/1159
@hellno @javulticat @wrboyce can this PR get a review?
@ppartarr Can you check why this is failing? You may need need to run make isort / make black.
Hi there! Unfortunately, this PR has not seen any activity for at least 90 days. If the PR is still relevant to the latest version of Zappa, please comment within the next 10 days if you wish to keep it open. Otherwise, it will be automatically closed.
Hi there! Unfortunately, this PR was automatically closed as it had not seen any activity in at least 100 days. If the PR is still relevant to the latest version of Zappa, please open a new PR.