Auth0:管理 Lambda 函数的身份验证

Auth0: Managing authentication on Lambda functions

当前实施

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

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

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

在需要身份验证的 API 端点上,我有一个 "jwtRsaCustomAuthorizer" 授权方。记录在案 here

尚存疑虑

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

我怎么知道用户 ID auth0|123456 是他们所说的?

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

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

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

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

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

您可以通过 jwt.io and 找到更多信息。