vue.js - 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 函数来做两件事:
- 更新用户 app_metadata
- 保存与用户关联的数据
我如何知道用户 id auth0|123456是他们所说的?
随着授权人验证 JWT,我是否知道令牌没有被操纵?例如,如果我只是解码传递的数据,我可以假设用户 ID 是有效的吗?
解决方案
简短的回答是:你并不真正关心前端。令牌的验证通常通过后端进行,在您的情况下,通过jwtRsaCustomAuthorizer
您正在谈论的。如果后端信任令牌,则返回数据,如果不信任,则返回授权错误。
您的后端,尤其jwtRsaCustomAuthorizer
是 验证您的 JWT 令牌的内容是否有效且受信任。一个 JWT 令牌由三部分组成。第一部分描述了使用的算法。第二部分是有效载荷,其中包含声明、随机数、颁发者和到期日期。第三部分用于验证 JWT 令牌是否由受信任方通过使用秘密并生成签名来颁发。在您的情况下,您正在使用带有私钥和公钥对的 RS256。
由于 JWT 令牌的前两部分用于生成签名,因此您无法在不使签名失效的情况下更改算法或有效负载。由于 RS256 使用公钥和私钥对使用非对称加密,您可以通过使用私钥执行相同的步骤并将新生成的签名与 JWT 令牌中的签名进行比较来验证 JWT 令牌,或者在您的 api 端点的情况下,使用公钥解密签名并对照 JWT 令牌的前两部分进行检查。
jwtRsaCustomAuthorizer
通过根据 auth0 提供的公钥检查 JWT 令牌,确保 JWT 令牌是由 auth0 创建的。如果签名与有效负载匹配,则意味着发行者必须有权访问仅对发行者可用的私钥。这使您可以信任有效负载。
您可以通过jwt.io和这个关于 hs256 和 rs256 之间区别的 stackoverflow 问题找到更多信息。
推荐阅读
- vue.js - Vue-awesome-swiper 在 nuxt 通用应用程序中不起作用
- networking - 从启用 istio 的命名空间到另一个命名空间的 Istio 流量
- c# - 为 IFormFile 实施流利验证的正确方法是什么
- javascript - 从角度范围访问 JavaScript 中的值
- python - 如何为易于更改的配置文件的每个元素存储信息(PYTHON)
- c# - C# 将嵌入的 DLL 复制到用户文件夹
- extjs - 如何在 extjs 的 numberfield 上捕获粘贴事件?
- javascript - 使用 reduce 使用应用脚本将空格添加到 HTML 电子邮件
- c# - 当 CanX 属性返回 true 时 Stylet Button 未启用
- html - 使用 HTML aria-label 时编码 CSS