使用 OAuth2 Proxy 和 Keycloak 作为 OAuth 2.0 服务器
本指南解释了如何使用以下流程为 RabbitMQ 和 OAuth2 Proxy 设置 OAuth 2.0 作为授权服务器
- 通过 OAuth2 Proxy 使用浏览器访问 RabbitMQ 管理 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
分支的本地克隆,其中包含本示例中使用的所有配置文件和脚本。GitHub 仓库 - 您的 /etc/hosts 文件中的以下条目。 没有这些条目,您将在浏览器中收到 DNS 错误。
localhost keycloak rabbitmq oauth2-proxy
make start-keycloak
或 make start-oauth2-proxy
将生成必要的 TLS 证书和私钥。 这些证书具有到期日期。
如果出现任何提示证书过期或无效的错误消息,请停止 Keycloak 和 oauth-proxy
并运行 make clean-certs
以重新生成证书和私钥,然后重新启动 Keycloak 和代理
部署 Keycloak
通过运行以下命令部署 Keycloak
make start-keycloak
要访问 Keycloak 管理 UI,请转到 https://keycloak:8443/ 并输入 admin
作为用户名和密码。
有一个名为 Test
的专用 Keycloak 域,配置如下
- rsa 签名密钥
- [rsa 提供程序]https://keycloak:8443/admin/master/console/#/realms/test/keys/providers)
rabbitmq-proxy-client
客户端
启动 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。