API网关具有执行授权的内置功能。
但是 awslabs 提供的示例将 lambda 连接到 API 网关,其中 lambda 根据此进行授权code https://github.com/awslabs/serverless-application-model/blob/master/examples/2016-10-31/api_lambda_request_auth/src/authorizer.js对于以下 API 网关:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
DefaultAuthorizer: MyLambdaRequestAuthorizer
Authorizers:
MyLambdaRequestAuthorizer:
FunctionPayloadType: REQUEST
FunctionArn: !GetAtt MyAuthFunction.Arn
因此,客户端提供的身份验证令牌由 lambda 接收,然后进行授权:
exports.handler = async function (event) {
const token = event.queryStringParameters.auth.toLowerCase()
....
switch (token) {
case 'allow':
return generateAuthResponse('user', 'Allow', methodArn)
case 'deny':
return generateAuthResponse('user', 'Deny', methodArn)
default:
return Promise.reject('Error: Invalid token') // Returns 500 Internal Server Error
}
}
但这不是 API 网关提供的内置身份验证。
API网关如何提供内置身份验证?
解决方案1:
通过 API 密钥创建和使用使用计划:在此方法中,您可以使用 API 密钥对用户进行身份验证。请点击此链接:API密钥方法 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-setup-api-key-with-console.html
解决方案2:
您可以通过 AWS Amazon Cognito 服务进行身份验证。与 OKTA 服务相同。请点击此链接:亚马逊认知 https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)