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

时间:2019-05-08 18:37:56

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

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

我已经读到,对于使用服务器,EC2或其他服务器的应用程序,最佳实践是将用户的ID令牌存储在后端。这是有道理的,因为节点进程将为我提供长期解决方案,以挂起并重用ID令牌。另一方面,无服务器应用程序无法提供这种奢侈。我考虑过只将其保留在前端,因为毕竟cognito提供的JWT令牌是经过签名的,因此应该是防篡改的,但这似乎让我有些不安。我更希望用户无法直接访问自己的令牌的系统。我还考虑过仅对发送给Lambda的每个请求都请求一个新令牌,但这似乎也不是完美的解决方案。

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

1 个答案:

答案 0 :(得分:2)

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

例如,波纹管是请求的标头。 在授权中存储了可以在https://jwt.io/中解码的jwt令牌 但无法修改,

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

此外,最好的做法是使您的令牌到期并按一定的时间间隔续签。