在S3服务的AWS无服务器网站中,何处存储API网关凭证?

时间:2018-11-06 15:57:42

标签: amazon-web-services amazon-s3 aws-lambda serverless

在示例AWS无服务器架构中,将有S3托管一个静态网站,并通过javascript调用API网关终端节点,从而调用Lambda函数。

如何通过将凭证存储在由S3提供的可公开访问的javascript源中来在不公开凭证的情况下针对AWS API网关进行身份验证?

(不询问后端凭据,这些凭据很容易存储(并加密)在Lambda函数可访问的环境变量中)

3 个答案:

答案 0 :(得分:1)

您的用户通常会使用Cognito或其他一些身份验证后端进行身份验证,将其凭据交换为JWT令牌或用于向API网关进行身份验证的等效令牌。这是其中的an example步骤。

还可以通过Cognito支持unauthenticated users

如果在某些情况下需要进行未经身份验证的API网关调用,请参阅this response

答案 1 :(得分:1)

您需要使用第三方身份提供程序从客户端获取令牌,您可以将其传递给API Gateway。我个人使用了 Auth0 ,最多两个身份提供者免费使用。

通过良好的代码示例,可以轻松地将您的Single Page Application(角度/反应/ Vue)集成到一个或多个Identity Providers

使用自定义身份验证器将server-side validation身份验证令牌集成到API网关中也很简单。还可以使用Authorization Extension控制基于角色的访问。网站的公共部分可以对不使用自定义身份验证器的API端点进行API调用。

这是Serverless Framework网站上的一个很好的指南,其中显示了Strategies for implementing user authentication in serverless applicationsworking example on GitHub

答案 2 :(得分:0)

最好使用AWS Cognito之类的方法(不必担心管理自己的身份验证服务器)。

在AWS Cognito中,您可以简单地向未经身份验证的用户授予调用API的访问权限。有关更多信息,请参见文档(herehere)。