跳至主内容
版本:4.2

将 OAuth2 Proxy 和 Keycloak 用作 OAuth 2.0 服务器

本指南将介绍如何为 RabbitMQ 和 OAuth2 Proxy 设置 OAuth 2.0,并将其作为授权服务器,使用以下流程:

  • 通过 OAuth2 Proxy 使用浏览器访问 RabbitMQ Management UI
                    [ Keycloak ] 3. authenticate
/|\ |
| | 4. token
2.redirect | \|/ [ RabbitMQ ]
[ Oauth2-Proxy ] ----5. forward with token--> [ http ]
/|\
|
1. rabbit_admin from a browser

使用 OAuth 2 Proxy 和 Keycloak 的先决条件

  • Docker
  • make
  • 克隆一个GitHub 仓库的本地副本(分支为 next),其中包含此示例中使用的所有配置文件和脚本。
  • 在您的 /etc/hosts 文件中添加以下条目。没有这些条目,您将在浏览器中遇到 DNS 错误。
localhost keycloak rabbitmq oauth2-proxy
信息

make start-keycloakmake start-oauth2-proxy 将生成必要的 TLS 证书和私钥。这些证书有有效期。

如果出现任何提示证书过期或无效的错误消息,请停止 Keycloak 和 oauth-proxy,运行 make clean-certs 来重新生成证书和私钥,然后重新启动 Keycloak 和代理。

部署 Keycloak

运行以下命令来部署 Keycloak

make start-keycloak

要访问 Keycloak Management UI,请访问 https://keycloak:8443/,然后输入 admin 作为用户名和密码。

有一个名为 Test 的专用 Keycloak 领域,配置如下:

启动 OAuth2 Proxy

要启动 OAuth2 Proxy,请运行以下命令:

make start-oauth2-proxy

Oauth2 Proxy 使用 Alpha 配置进行配置。这种配置类型会将访问令牌插入 HTTP Authorization 标头。

启动 RabbitMQ

要运行 RabbitMQ,请运行以下命令:

MODE=oauth2-proxy make start-rabbitmq

注意:Oauth2 Proxy 要求 aud 声明与客户端 ID 匹配。然而,RabbitMQ 要求 aud 字段与 rabbitmq 匹配,这是指定的 resource_server_id。鉴于无法同时使用这两个值配置 Keycloak,rabbitmq.conf 包含以下禁用受众声明验证的设置。

auth_oauth2.verify_aud = false

访问 管理 UI

访问 https://oauth2-proxy:8442/,点击 Sign in with Keycloak OIDC 链接,然后输入 rabbit_admin 作为用户名和 rabbit_admin 作为密码。您应该会被重定向到 RabbitMQ 管理 UI。

© . This site is unofficial and not affiliated with VMware.