Sag*_*ani 3 amazon-web-services aws-api-gateway
我已在 API 网关中为代理资源配置了自定义授权,但我的要求是免除少数 API 的授权,但我不想在 API 网关中配置新的 API,因为我正在尝试通过 API 网关设计代理。
例如,API /server/ver1.0/rest/{proxy+},这是我在 API 网关中配置的 REST API,它通过自定义授权者,如果成功,则调用后端 http 服务。
但我想免除 API - /server/ver1.0/rest/acc/reg 的授权。
小智 6
不确定这是否直接回答了 OP,因为我们不将请求代理到后端 API,而是使用 Lambda 进行所有 API 调用,但我们仍然需要仅授权部分 API。我们就是这样做的:
我们有一个使用 SAM 部署的 API,在这个项目中,我们对大多数 api 使用自定义授权程序。
MonitorApi:
Type: AWS::Serverless::Api
Properties:
Cors:
AllowMethods: "'OPTIONS,POST,GET,PATCH,DELETE'"
AllowHeaders: "'*'"
AllowOrigin: "'*'"
StageName: !Ref AppStage
GatewayResponses:
DEFAULT_4xx:
ResponseParameters:
Headers:
Access-Control-Expose-Headers: "'*'"
Access-Control-Allow-Headers: "'*'"
Access-Control-Allow-Origin: "'*'"
Auth:
DefaultAuthorizer: LambdaTokenAuthorizer # This authorizer is used on the API
AddDefaultAuthorizerToCorsPreflight: false
Authorizers:
LambdaTokenAuthorizer:
FunctionArn: !GetAtt AuthorizeFunction.Arn
Identity:
Header: Authorization
ReauthorizeEvery: 300
Run Code Online (Sandbox Code Playgroud)
对于一些需要公开的资源,我们在函数级别覆盖它,如下所示:
SystempingFunction: # Systemping service in API
Type: AWS::Serverless::Function
Properties:
CodeUri: monitor/
Handler: systemping.handler
Runtime: nodejs12.x
Timeout: 20
Events:
SystempingEvent:
Type: Api
Properties:
Auth:
Authorizer: NONE # Turn off Authorization for this function
Path: /systemping
Method: get
RestApiId: !Ref MonitorApi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2368 次 |
| 最近记录: |