无服务器应用程序的访问令牌和 ID 令牌存储

问题描述 投票:0回答:1

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

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

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

amazon-web-services aws-lambda amazon-cognito
1个回答
4
投票

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

例如下面包含请求的标头。 JWT 令牌存储在

Authorization
中,可以在 https://jwt.io/ 中解码,但无法修改:

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

此外,最佳做法是让您的令牌过期并按一定时间间隔续订。

© www.soinside.com 2019 - 2024. All rights reserved.