请求头认证(Header Authentication)
请求头认证(Header Authentication)
目录
示例:尚未实现
此功能尚未实现!状态更新请查看 https://github.com/wavelog/wavelog/pull/2978
本指南说明如何配置 Wavelog 以使用 Keycloak 进行认证。
将 OAuth2-Proxy 与 Keycloak 一起使用时,默认仅有用户名和邮箱可用。
配置 Keycloak 客户端
在 Keycloak 中创建一个启用标准流程与客户端认证的客户端:
- 在管理控制台中选择
Clients - 点击
Create Client - 输入
Client ID(例如 wavelog-proxy),点击下一步 - 将
Client authentication切换为开启 - 输入你的 Wavelog URL,以防止开放重定向
Root URL:https://wavelog.example.com/Home URL:https://wavelog.example.com/Valid redirect URIs:https://wavelog.example.com/*Valid post logout redirect URIs:https://wavelog.example.com/*
- 保存
配置 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 以启用基于请求头的认证:
- 将
$config['auth_header_enable']设为true - 若希望自动创建用户,将
$config['auth_header_create']设为true
OAuth2-Proxy 会给请求头加上 X-Forwarded 前缀,Wavelog 再添加 HTTP- 前缀。请求头名称全部大写。
- 用户名为
$config['auth_headers_username'] = "HTTP_X_FORWARDED_PREFERRED_USERNAME"; - 邮箱为
$config['auth_headers_email'] = "HTTP_X_FORWARDED_EMAIL"; - 登录页的显示文字由
$config['auth_header_text']控制
从 OIDC 获取呼号
OAuth2-Proxy 并不将请求头中的自定义 OpenID Connect 声明作为稳定特性支持。不过,像 groups 这样的标准声明是可以使用的。
Wavelog 手册(中文版)
/
请求头认证(Header Authentication)
0 字
0 行