如何解决keykcloak + apache mod_auth_openidc + zabbix HTTP 认证
我想将 keycloak AUTH 配置为现代 zabbix 5.2 版 为了实现它,我使用了 apache mod_auth_openidc https://github.com/zmartzone/mod_auth_openidc
我的架构看起来像
- 用户转到 apache 位置,如果他没有授权,他将重定向到 keykloak
- 用户在 keyklock(内部 keycloak 用户)中进行身份验证并返回 apache
- Apache 将他重定向到 zabbix (Nginx) 的前面
Keycloak 服务器:版本为 13.0.1
Apache:Apache/2.4.6 (CentOS)
Nginx: 版本 1.16.1
zabbix: 5.2.0
首先我配置了简单的测试网页以确保“KC”正常工作
我的 apache 配置是
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
#this is required by mod_auth_openidc
OIDCProviderMetadataURL https://KEYCLOAK_SERVER_IP/auth/realms/zabbix/.well-kNown/openid-configuration
OIDCRedirectURI http://APACHE_SERVER_IP/protected_by_oidc_rp.PHP/callback
OIDCCryptoPassphrase 0123456789
OIDcclientID zabbix
OIDcclientSecret 9ac67ff0-5733-45ea-b910-2b8dcd1386d2
# See https://github.com/Reposoft/openidc-keycloak-test/issues/7
#OIDCProviderTokenEndpointAuth client_secret_basic
OIDCSSLValidateServer Off
OIDCRemoteUserClaim email
OIDCScope "openid email"
<Location "/protected_by_oidc_rp.PHP">
AuthType openid-connect
Require valid-user
</Location>
</VirtualHost>
一切正常。 在 KC 授权后,我得到了我的页面
第二 我在 zabbix 中启用了 HTTP 身份验证 - 这只是简单的基本身份验证
我重新配置了我的 apache 位置
<VirtualHost *:80>
......
......
......
<Location "/">
AuthType openid-connect
Require valid-user
ProxyPreserveHost On
ProxyPass http://ZABBIX_SERVER_IP/
ProxyPassReverse http://ZABBIX_SERVER_IP/
</Location>
</VirtualHost>
<Location "/">
...
...
RequestHeader set Authorization "Basic <SOME_VARRIABLE_FROM_KEYCLOAK_CONVERTED_TO_BASE64>"
</Location>
我的问题是 我如何从 keycloak 变量中获取用户名,例如“preferred_username”并将其转换为 base64?
"preferred_username" - 内容有效用户登录
更新
我仍在尝试配置此架构。我真的需要 OPEND 而不是 SAML
因为keycloak在浏览器中隐藏了他的标题
我在 Nginx 服务器上使用 tcpflowtcpflow -p -c -i eth0 port 80
我看到来自我的密钥斗篷服务器的标题
Cookie: mod_auth_openidc_session=b06b8f2c-2cf8-4d12-aed9-b162df5ef9b4
OIDC_CLaim_sub: f7987186-3f96-4a86-b726-09c941ca4092
OIDC_CLaim_preferred_username: test
我在 Nginx.conf 中打开 underscores_in_headers
在 Nginx 中配置 zabbix 位置。我尝试了不同的方法和变量,但没有用
location ~ [^/]\.PHP(/|$) {
auth_request_set $user $upstream_http_oidc_claim_preferred_username;
proxy_set_header X-User $user;
proxy_set_header $user $upstream_http_oidc_claim_preferred_username;
}
你能帮我抓住这个 HEADER
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。