Spring security AWS Lambda、AWS API网关和安全REST端点

Spring security AWS Lambda、AWS API网关和安全REST端点,spring-security,aws-lambda,Spring Security,Aws Lambda,我正在考虑在AWS Lambda和AWS API网关上实现一个服务,作为一系列REST端点。前端将是一个直接调用这些端点的JS浏览器客户端,无需中间层 在我的研究中,我似乎找不到的是,我如何确保那些“登录”的人能够访问这些电话?我看到Lambda调用是无状态的,因此没有会话数据。我不需要会话数据,只需要知道它们经过身份验证,并且在同样的情况下被授权访问特定的端点。将有一个数据库(DynamoDB或RDS),所以如果我需要会话数据,我可以创建它 有办法做到这一点吗?我意识到我可以通过每次API调用

我正在考虑在AWS Lambda和AWS API网关上实现一个服务,作为一系列REST端点。前端将是一个直接调用这些端点的JS浏览器客户端,无需中间层

在我的研究中,我似乎找不到的是,我如何确保那些“登录”的人能够访问这些电话?我看到Lambda调用是无状态的,因此没有会话数据。我不需要会话数据,只需要知道它们经过身份验证,并且在同样的情况下被授权访问特定的端点。将有一个数据库(DynamoDB或RDS),所以如果我需要会话数据,我可以创建它

有办法做到这一点吗?我意识到我可以通过每次API调用传递他们的用户名和密码,但似乎一定有更好的方法


而且,这可能是用Java实现的。我可以使用Spring安全性吗?

我认为您不想在Lambda函数中使用Spring安全性。我无法想象它会工作得很好,我怀疑它是否会工作。即使它可以在Lambda上运行,它也肯定会增加函数的冷启动时间,而不是您想要处理的时间

向无状态服务提供用户身份验证检查的推荐方法是使用JWT(JSON Web令牌)。Auth0提供了一篇关于JWT的很好的通用文章,以及一篇关于将Auth0与API网关和Lambda一起使用的教程。即使您不使用Auth0,我认为第二个教程对于理解如何在API网关和Lambda上执行用户身份验证很有用


您还可以使用函数,这些函数允许您将所有身份验证代码封装在一个Lambda函数中,该函数的作用类似于API端点的“看门人”。我建议使用自定义授权lambda函数来验证提交给您的API的JSON Web令牌。

< P>以确保您的API网关端点,您可以考虑使用CONNIOTO授权令牌或lambda(自定义)授权器来签署请求,这可以相对容易地设置。还有其他选择。退房

您可以使用CloudFormation模板或通过AWS控制台设置其中一个。在前端,您可以使用AWS Amplify库对请求进行签名


查看如何保护对API网关的访问。

非常感谢Mark,这看起来很有用。AWS Cognito可以用于身份验证吗?我不太关心授权。是的,Cognito可以与API网关IAM身份验证结合使用。