通过自定义授权方方法使用 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_tokenid_tokenexpiry_time。此外,我可以使用id_token 获取用户信息,例如emailId。现在,我需要保护/防止访问我的后端,即 APIGateway 和 Lambda。

有很多选项可以保护对 AWS APIGateway 的访问,例如 IAM 授权方自定义授权方。有一个关于如何使用 IAM authorizer with Auth0 的 Auth0 文档。我想知道,如何使用自定义授权。我了解自定义授权方如何工作的高级架构。

以下是我关于自定义授权方的问题:

1Q.通过使用react auth0认证模块,我得到了access_tokenid_tokenexpiry。收到的 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的主要内容,如果未能解决你的问题,请参考以下文章

未调用 AWS API Gateway 自定义授权方

如何让我的 Auth0 权限进入 AWS HTTP API Jwt 授权方的访问令牌的范围声明?

无服务器框架 AWS 跨账户自定义授权方

AWS API Gateway 自定义授权方有用吗?

如何从 AWS API Gateway 自定义授权方检索 Spring Boot 中的上下文对象?

AWS API Gateway 自定义授权方给予例外