首页 > 解决方案 > Auth0:管理 Lambda 函数的身份验证

问题描述

当前实施

我当前的应用程序在前端使用 Vue.js + Auth0。

Vue.js 利用 AWS API Gateway,POST/GET 方法通过以下方式发送:

https://xxxx.execute-api.us-east-1.amazonaws.com/dev/

在需要身份验证的 API 端点上,我有一个“jwtRsaCustomAuthorizer”授权者。这是记录在这里

剩下的担忧

但是验证令牌是否足够有效?在这种情况下,我想做一个 POST 函数来做两件事:

我如何知道用户 id auth0|123456是他们所说的?

随着授权人验证 JWT,我是否知道令牌没有被操纵?例如,如果我只是解码传递的数据,我可以假设用户 ID 是有效的吗?

标签: vue.jslambdaauth0

解决方案


简短的回答是:你并不真正关心前端。令牌的验证通常通过后端进行,在您的情况下,通过jwtRsaCustomAuthorizer您正在谈论的。如果后端信任令牌,则返回数据,如果不信任,则返回授权错误。

您的后端,尤其jwtRsaCustomAuthorizer是 验证您的 JWT 令牌的内容是否有效且受信任。一个 JWT 令牌由三部分组成。第一部分描述了使用的算法。第二部分是有效载荷,其中包含声明、随机数、颁发者和到期日期。第三部分用于验证 JWT 令牌是否由受信任方通过使用秘密并生成签名来颁发。在您的情况下,您正在使用带有私钥和公钥对的 RS256。

由于 JWT 令牌的前两部分用于生成签名,因此您无法在不使签名失效的情况下更改算法或有效负载。由于 RS256 使用公钥和私钥对使用非对称加密,您可以通过使用私钥执行相同的步骤并将新生成的签名与 JWT 令牌中的签名进行比较来验证 JWT 令牌,或者在您的 api 端点的情况下,使用公钥解密签名并对照 JWT 令牌的前两部分进行检查。

jwtRsaCustomAuthorizer通过根据 auth0 提供的公钥检查 JWT 令牌,确保 JWT 令牌是由 auth0 创建的。如果签名与有效负载匹配,则意味着发行者必须有权访问仅对发行者可用的私钥。这使您可以信任有效负载。

您可以通过jwt.io这个关于 hs256 和 rs256 之间区别的 stackoverflow 问题找到更多信息。


推荐阅读