我已经用AWS开发了一个Web应用程序几个月了。我尽可能地尽可能地利用最佳实践。无服务器,使用API网关和Lambda函数等。此时,我有一个工作的Web SPA调用API网关,现在我遇到了我的API的身份验证/授权。
了解Cognito,我遇到了this nice presentation以不同的方式将其用于身份验证/授权。我的问题主要是关于授权部分。显然,有三种方法可以实现授权。最安全的是签名v4。暂且不谈我需要在AWS上做的准备工作,我想知道我需要对客户端代码应用哪些更改。
目前,当前的实现只是将HTTP请求发送到API网关,并在标头中嵌入id_token
。这可确保只有经过身份验证的用户才能进行呼叫。但它没有检查授权。
根据演示文稿,如果我想使用签名v4,我必须将我的id_token
与一些AWS凭证(通过调用Amazon Cognito联合身份)交换,然后使用这些AWS凭证制作我的API网关请求的不同版本并使用它。
现在,我的问题是:
答案 0 :(得分:0)
从2019年开始,您可以通过AWS控制台或AWS SAM API Auth Object设置API Gateway Authorization(Access Control) with IAM。 如果使用SAM,则如下所示:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
DefaultAuthorizer: AWS_IAM
MyFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: MyFunction
...
Events:
Post:
Type: Api
Properties:
Path: /compute
Method: POST
RestApiId: !Ref MyApi
Auth:
Authorizer: AWS_IAM
在前端,您可以use AWS Amplify sdk to access your API。它会使用Signature V4自动签署您的API请求。