You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Apache2的mod_auth_openidc与Keycloak实现静态目录授权访问?

用Apache2 + mod_auth_openidc + Keycloak实现静态目录授权访问配置

最近我搭建了一套简易的授权访问系统,用Apache2搭配mod_auth_openidc模块,以Keycloak作为OpenID Connect身份认证服务器,来保护静态目录的访问权限。查了不少文档和文章后,整理出一套可用的配置方案,分享给大家:

1. HTTP强制跳转HTTPS配置

首先要保证所有请求都走HTTPS(OIDC认证需要加密传输),所以先配置80端口的重定向:

<VirtualHost *:80>
    DocumentRoot /var/www/html
    RewriteEngine On
    # 把所有HTTP请求强制重定向到HTTPS
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    # 也可以用Redirect指令替代上面的Rewrite规则(二选一即可)
    # Redirect permanent / https://%{HTTP_HOST}/
</VirtualHost>

2. HTTPS站点核心配置(含OIDC认证)

接下来是443端口的核心配置,这里要整合mod_auth_openidc和Keycloak的对接参数:

<VirtualHost *:443>
    DocumentRoot /var/www/html
    ServerName your-domain.com  # 替换成你的实际域名

    # HTTPS证书配置(提前申请好SSL证书)
    SSLEngine on
    SSLCertificateFile /path/to/your/cert.pem
    SSLCertificateKeyFile /path/to/your/private-key.pem

    # mod_auth_openidc与Keycloak的对接配置
    OIDCProviderMetadataURL https://your-keycloak-domain/auth/realms/your-realm/.well-known/openid-configuration
    OIDCClientID your-client-id  # Keycloak中创建的客户端ID
    OIDCClientSecret your-client-secret  # Keycloak客户端的密钥
    OIDCRedirectURI https://your-domain.com/callback  # 回调地址,需和Keycloak客户端配置一致
    OIDCScope "openid email profile"

    # 会话超时配置
    OIDCSessionInactivityTimeout 3600  # 无活动1小时后超时
    OIDCSessionMaxDuration 86400  # 会话最长有效期24小时

    # 保护整个静态目录:所有访问都需经过Keycloak认证
    <Location "/">
        AuthType openid-connect
        Require valid-user
    </Location>

    # 可选配置:设置无需认证的公开目录
    # <Location "/public">
    #     Require all granted
    # </Location>
</VirtualHost>

关键参数说明

  • OIDCProviderMetadataURL:Keycloak自动生成的元数据地址,替换成你的Keycloak域名和对应的Realm名称即可,它会自动加载Keycloak的认证端点、密钥等信息
  • OIDCClientID & OIDCClientSecret:在Keycloak后台创建客户端时生成的凭证,要确保客户端的Access Type设置为confidential(因为是Web应用场景)
  • OIDCRedirectURI:必须和Keycloak客户端配置中的Valid Redirect URIs完全一致,这个路径是mod_auth_openidc处理认证回调的地址
  • <Location "/">块:指定需要保护的路径,这里配置的是根目录,意味着所有访问静态内容的请求都需要先通过Keycloak登录认证,只有合法用户才能访问

3. 部署前的准备工作

  • 安装必要组件:在Debian/Ubuntu系统下,用命令安装依赖:
    sudo apt install apache2 libapache2-mod-auth-openidc
    sudo a2enmod ssl rewrite auth_openidc
    
  • Keycloak端配置:
    1. 创建一个Realm(或使用默认Realm)
    2. 在Realm中创建OpenID Connect类型的客户端,Access Type设为confidential
    3. 在客户端的Valid Redirect URIs中填入上面的回调地址(比如https://your-domain.com/callback)
    4. 确保客户端启用了Authorization Code Flow(默认一般是开启的)
  • 测试配置:修改完Apache配置后,重启服务生效:
    sudo systemctl restart apache2
    
    访问你的域名,应该会自动跳转到Keycloak的登录页面,登录成功后就能访问静态目录了

内容的提问来源于stack exchange,提问作者Sumit Ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:16:30