跳至主要内容
版本:4.0

使用 https://auth0.com/ 作为 OAuth 2.0 服务器

本指南介绍如何为 RabbitMQ 设置 OAuth 2.0,并使用 Auth0 作为授权服务器,使用以下流程

  • 通过浏览器访问 管理 UI
  • 访问管理 REST API
  • 应用程序身份验证和授权

遵循本指南的先决条件

创建 RabbitMQ API

在 Auth0 中,资源映射到应用程序 API。

  1. https://auth0.com/ 中登录您的帐户后,转到**仪表盘 > 应用程序 > API > 创建 API**。
  2. 将其命名为 rabbitmq。这里重要的是标识符,它必须具有我们在 RabbitMQ 中配置的resource_server_id的名称。此标识符进入audience JWT 字段。在我们的例子中,它被称为 rabbitmq
  3. 选择 RS256 作为签名算法。
  4. 启用**RBAC**。
  5. 启用**在访问令牌中添加权限**。

在 RabbitMQ API 中配置权限

  1. 编辑我们刚刚创建的名为 rabbitmq 的 API。

  2. 进入权限并添加此 api 可以授予的权限(范围)。您将添加以下范围

    • rabbitmq.read:*/*
    • rabbitmq.write:*/*
    • rabbitmq.configure:*/*
    • rabbitmq.tag:administrator

为管理 UI 创建 OAuth 客户端

默认情况下,对于我们创建的每个 API,都会使用 API 的 标识符 作为其名称创建一个应用程序应用程序请求一个OAuth 客户端

转到**仪表盘 > 应用程序**,您应该会看到您的应用程序已列出。应用程序为我们提供了一个client_id、一个client_secret和一个名为Domain的 HTTP 端点,用于声明令牌。

创建应用程序 rabbitmq-management

应用程序为我们提供了管理 UI 代表最终用户进行身份验证的 client-id 和 client-secret。

在设置中,选择

  • 应用程序类型:单页应用程序
  • 令牌端点身份验证方法:
  • 允许的回调 URL:https://127.0.0.1:15672/js/oidc-oauth/login-callback.html
  • 允许的 Web 来源:https://127.0.0.1:15672
  • 允许的来源(CORS):https://127.0.0.1:15672

创建用于管理 UI 访问的用户

创建用户

  1. 转到**用户管理 > 用户**。
  2. 创建一个用户。这是您将通过管理 UI 登录的用户。

创建权限并授予它们

  1. 转到**角色**。
  2. 创建名为 rabbitmq.tag:administrator 的角色。
  3. 转到**权限**并选择所有权限。
  4. 转到**用户**,确保我们的用户已列出,否则将我们的用户添加到具有此角色的用户列表中。

配置 RabbitMQ 以使用 Auth0 进行身份验证

要配置 RabbitMQ,您需要从 Auth0 收集以下信息

  1. 转到**仪表盘 > 应用程序 > 应用程序**。
  2. 单击应用程序 rabbitmq-management
  3. 记下客户端 ID
  4. 并记下
  5. 在 RabbitMQ 配置文件中使用客户端 ID字段中的最后一个值

编辑配置文件 conf/auth0/rabbitmq.conf 并将 {CLIENT_ID}{DOMAIN} 替换为您上面收集的值。

启动 RabbitMQ

运行以下命令以启动 RabbitMQ

export MODE=auth0
make start-rabbitmq

验证管理 UI 流程

  1. 转到管理 UI https://127.0.0.1:15672
  2. 单击单个按钮,使用您的辅助 Auth0 用户进行身份验证。您应该会被重定向回管理 UI。

Auth0 会发出如下所示的访问令牌。它在scope声明中具有在management.oauth_scopes中配置的请求范围,并且在permissions声明中具有您在 Auth0 中为此用户配置的所有范围。RabbitMQ 从scope声明以及在auth_oauth2.additional_scopes_key中配置的声明名称(其值为permissions)中读取范围。

{
"iss": "https://dev-tm5ebsbbdcbqddcj.us.auth0.com/",
"sub": "auth0|66d980b862efcd9f5144f42a",
"aud": [
"rabbitmq",
"https://dev-tm5ebsbbdcbqddcj.us.auth0.com/userinfo"
],
"iat": 1725533554,
"exp": 1725619954,
"scope": "openid profile rabbitmq.tag:administrator",
"azp": "IC1fqsSjkQq2cVsYyHUuQyq30OAYuUv2",
"permissions": [
"rabbitmq.configure:*/*",
"rabbitmq.read:*/*",
"rabbitmq.tag:administrator",
"rabbitmq.write:*/*"
]
}
© 2024 RabbitMQ. All rights reserved.