通过自定义授权方方法使用 Auth0 授权 AWS APIGateway
Posted
技术标签:
【中文标题】通过自定义授权方方法使用 Auth0 授权 AWS APIGateway【英文标题】:Authorizing AWS APIGateway using Auth0 by custom authorizer approach 【发布时间】:2017-12-13 22:01:09 【问题描述】:技术堆栈是前端的 reactJS,后端由 APIGateway 和 Lambda 提供支持。我在我的反应应用程序中使用 Auth0 作为身份服务。在通过 Auth0 提供的社交登录名之一进行身份验证时,我返回 access_token
、id_token
和 expiry_time
。此外,我可以使用id_token
获取用户信息,例如emailId
。现在,我需要保护/防止访问我的后端,即 APIGateway 和 Lambda。
有很多选项可以保护对 AWS APIGateway 的访问,例如 IAM 授权方、自定义授权方。有一个关于如何使用 IAM authorizer with Auth0 的 Auth0 文档。我想知道,如何使用自定义授权。我了解自定义授权方如何工作的高级架构。
以下是我关于自定义授权方的问题:
1Q.通过使用react auth0认证模块,我得到了access_token
、id_token
和expiry
。收到的 access_token 不是 JWT。如何获取 JWT access_token,以便我可以通过 Authorization 标头传递它。
2Q. 我在 Auth0 仪表板中看到一个名为 API 的单独部分。这是非常令人困惑和模棱两可的。据我了解,这个 Auth0 的 API 部分需要单独调用 Auth0 服务器并接收新的 access_token,这与社交登录的访问令牌不同。为什么我不能使用 react 的 Auth 客户端的访问令牌?我可能错了,但我不理解 Auth0 中的这个 API 部分。
3Q. 假设我在授权标头中发送了 access_token,如何在 自定义授权者的 Lambda 中验证它。有几篇关于此的博客文章,但每篇文章都遵循不同的方法。有些人使用id_token
进行验证,其他人使用jwt package
来解码,但我没有看到对Auth0 的验证调用。
有一些关于使用 Auth0 授权 APIGateway 的博客文章,但它们要么是旧的/不推荐使用的,要么是使用一些黑客来授权它。如果我们可以记录使用 Auth0 授权 APIGateway 的正确方法,那就太好了。
【问题讨论】:
【参考方案1】:在与 Auth0 支持团队交谈后,我找到了上述问题的答案。这是详细的指南,解释了使用自定义授权器的 APIGateway 和 Auth0 集成。 https://github.com/lakshmantgld/auth0-APIGateway-CustomAuthorizer
【讨论】:
以上是关于通过自定义授权方方法使用 Auth0 授权 AWS APIGateway的主要内容,如果未能解决你的问题,请参考以下文章
如何让我的 Auth0 权限进入 AWS HTTP API Jwt 授权方的访问令牌的范围声明?