请求头认证(Header Authentication)

请求头认证(Header Authentication)

目录

示例:尚未实现

此功能尚未实现!状态更新请查看 https://github.com/wavelog/wavelog/pull/2978

本指南说明如何配置 Wavelog 以使用 Keycloak 进行认证。

将 OAuth2-Proxy 与 Keycloak 一起使用时,默认仅有用户名和邮箱可用。

配置 Keycloak 客户端

在 Keycloak 中创建一个启用标准流程与客户端认证的客户端:

  1. 在管理控制台中选择 Clients
  2. 点击 Create Client
  3. 输入 Client ID(例如 wavelog-proxy),点击下一步
  4. 将 Client authentication 切换为开启
  5. 输入你的 Wavelog URL,以防止开放重定向
    1. Root URL:https://wavelog.example.com/
    2. Home URL:https://wavelog.example.com/
    3. Valid redirect URIs:https://wavelog.example.com/*
    4. Valid post logout redirect URIs:https://wavelog.example.com/*
  6. 保存

配置 OAuth2-Proxy

OAuth2-Proxy 既可以配置为直接处理 Web 流量,也可以处理 proxy_pass,详情参见 OAuth2-Proxy 文档。

下面是一个 OAuth2-Proxy 的 docker-compose 示例:

services:
  oauth2-proxy:
    container_name: oauth2-proxy
    image: quay.io/oauth2-proxy/oauth2-proxy:v<Check_Releases_For_Latest>
    command: --config /oauth2-proxy.cfg
    hostname: oauth2-proxy
    volumes:
      - "./oauth2-proxy.cfg:/oauth2-proxy.cfg"
    restart: unless-stopped
    ports:
      - "8080:4180"

以及一个 oauth2-proxy.cfg 示例:

http_address = "0.0.0.0:4180"
upstreams = http://wavelog:80

cookie_secret =
provider = "keycloak-oidc"
email_domains = ["*"]
client_id = "wavelog"
client_secret =
redirect_url = "http://wavelog.example.com/oauth2/callback"
oidc_issuer_url= "http://sso.example.com/"
code_challenge_method="S256"
pass_user_headers=true
set_xauthrequest = true

配置要点:

  • cookie_secret 应为 32 字节的随机值,参见 Proxy Config。
  • client_id 必须与 Keycloak 中的 Client ID 一致`
  • client_secret 可在 Keycloak 管理界面 > Clients > Wavelog > Credentials 下找到

配置 Wavelog

修改 config.php 以启用基于请求头的认证:

  1. 将 $config['auth_header_enable'] 设为 true
  2. 若希望自动创建用户,将 $config['auth_header_create'] 设为 true

OAuth2-Proxy 会给请求头加上 X-Forwarded 前缀,Wavelog 再添加 HTTP- 前缀。请求头名称全部大写。

  1. 用户名为 $config['auth_headers_username'] = "HTTP_X_FORWARDED_PREFERRED_USERNAME";
  2. 邮箱为 $config['auth_headers_email'] = "HTTP_X_FORWARDED_EMAIL";
  3. 登录页的显示文字由 $config['auth_header_text'] 控制

从 OIDC 获取呼号

OAuth2-Proxy 并不将请求头中的自定义 OpenID Connect 声明作为稳定特性支持。不过,像 groups 这样的标准声明是可以使用的。

Wavelog 手册(中文版) / 请求头认证(Header Authentication) 0 字 0 行 bg8lng
2026-10-21T12:42:36.105175540Z 2026-10-21T12:43:44.075488768Z