0

我想将keycloak AUTH配置为现代zabbix 5.2版

为了实现它,我使用了 apache mod_auth_openidc https://github.com/zmartzone/mod_auth_openidc

我的架构看起来像

图式

  1. 用户转到 apache 位置,如果他没有授权,他会重定向到 keykloak
  2. 用户在 keyklock(内部 keycloak 用户)中进行身份验证并返回到 apache
  3. 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_VARIABLE_FROM_KEYCLOAK_CONVERTED_TO_BASE64>"
</Location>

我的问题是:如何从 keycloak 变量中获取用户名,例如preferred_username并将其转换为 base64?

preferred_username包含有效的用户登录。

更新

我仍在尝试配置此架构。我真的需要 OPEND 而不是 SAML,因为 keycloak 从浏览器中隐藏了他的标头我在 NGINX 服务器上使用 tcpflow
tcpflow -p -c -i eth0 port 80
我看到了来自我的 keycloak 服务器的标头

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;

}

你能帮我抓住这个标题吗

4

0 回答 0