amazon-web-services - 无服务器应用程序的访问 token 和 ID token 存储

标签 amazon-web-services aws-lambda amazon-cognito

我正在使用 AWS(Lambda、API Gateway、Cognito 等)编写一个无服务器应用程序,我发现自己想知道如何最好地保护我的堆栈。

我读到,对于使用服务器、EC2 或其他方式的应用程序,最佳实践是将用户的 ID token 存储在后端。这是有道理的,因为节点进程将为我提供一个保留和重用 ID token 的长期解决方案。另一方面,无服务器应用程序则无法提供这种奢侈。我考虑过将其保留在前端 - 因为毕竟 Cognito 提供的 JWT token 是经过签名的,因此应该是防篡改的,但这对我来说似乎有点令人不安。我更喜欢用户无法直接访问自己的代币的系统。我还考虑过为发送到 Lambda 的每个请求请求一个新 token ,但这似乎也不是一个完美的解决方案。

围绕无服务器身份验证和授权是否存在某种公认的最佳实践?当用户打开应用程序时,我是否在正确的轨道上存储我的 token 客户端?

最佳答案

我没有发现存储您的 token 客户端存在问题。用户可以随时从 header 请求中复制粘贴 token 。 token 不是 secret 。它无法被篡改,因为它经过数字签名。

例如,下面是请求的 header 。 在授权中存储了可以在 https://jwt.io/ 中解码的 jwt token 但无法修改,

Host: aa.aa.aa
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer: token234567890-eddedede
X-Requested-With: XMLHttpRequest
Connection: keep-alive

此外,最佳做法是使 token 过期并按一定时间间隔续订。

关于amazon-web-services - 无服务器应用程序的访问 token 和 ID token 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56047107/

相关文章:

javascript - 如何从AWS API Gateway获取url参数并将其输入到lambda中

javascript - 来自 Lambda 的 AWS Cognito adminCreateUser

javascript - Cognito adminDeleteUser 用户池不存在错误

objective-c - Swift/Objective S3 文件上传

amazon-web-services - 如何获取 Fargate ecs 容器的 TaskId

php - 用于 php 的 Amazon s3 SDK 无法获取 Bucket 对象列表

ios - 自动验证 Amazon Cognito 用户池中的用户

amazon-web-services - AWS API Gateway - Lambda - 内部服务器错误

amazon-web-services - EC2 实例的功能是否按比例扩展?

amazon-s3 - 使用自定义域的 AWS Lambda 和 S3 静态文件路由