在示例AWS无服务器架构中,将有S3托管一个静态网站,并通过javascript调用API网关终端节点,从而调用Lambda函数。
如何通过将凭证存储在由S3提供的可公开访问的javascript源中来在不公开凭证的情况下针对AWS API网关进行身份验证?
(不询问后端凭据,这些凭据很容易存储(并加密)在Lambda函数可访问的环境变量中)
答案 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 applications和working example on GitHub。
答案 2 :(得分:0)
最好使用AWS Cognito之类的方法(不必担心管理自己的身份验证服务器)。
在AWS Cognito中,您可以简单地向未经身份验证的用户授予调用API的访问权限。有关更多信息,请参见文档(here和here)。