微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

keykcloak + apache mod_auth_openidc + zabbix HTTP 认证

如何解决keykcloak + apache mod_auth_openidc + zabbix HTTP 认证

我想将 keycloak AUTH 配置为现代 zabbix 5.2 版 为了实现它,我使用了 apache mod_auth_openidc https://github.com/zmartzone/mod_auth_openidc

我的架构看起来像

schema

  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_VARRIABLE_FROM_KEYCLOAK_CONVERTED_TO_BASE64>"
</Location>

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

"preferred_username" - 内容有效用户登录

更新

我仍在尝试配置此架构。我真的需要 OPEND 而不是 SAML 因为keycloak在浏览器中隐藏了他的标题 我在 Nginx 服务器上使用 tcpflow
tcpflow -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 举报,一经查实,本站将立刻删除。