oauth2-proxy

OAuth2/OIDC 反向代理接入

补充说明

oauth2-proxy 在应用前面做 OIDC/OAuth2 登录,认证通过后把用户信息通过 header 传给后端。它适合给没有内置认证的内部服务加统一登录。

常用示例

oauth2-proxy --config /etc/oauth2-proxy.cfg
oauth2-proxy \
  --provider=oidc \
  --oidc-issuer-url=https://auth.example.com/realms/app \
  --email-domain=example.com \
  --upstream=http://127.0.0.1:8080 \
  --http-address=0.0.0.0:4180 \
  --cookie-secret="$COOKIE_SECRET"

oauth2-proxy.cfg:

provider = "oidc"
oidc_issuer_url = "https://auth.example.com/realms/app"
email_domains = ["example.com"]
upstreams = ["http://127.0.0.1:8080"]
http_address = "0.0.0.0:4180"
cookie_secret = "32-byte-random-string"
reverse_proxy = true

易错点与排错

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 多实例部署后登录态频繁丢失,为什么?
  2. 后端如何避免有人伪造身份 header?
  3. reverse_proxy=true 的作用和风险是什么?
答案
  1. 会话默认存在 cookie,多实例要配置 Redis 等共享存储。
  2. 后端只信任来自 oauth2-proxy 的 header,不要无条件信任外部 X-Forwarded-*。
  3. 只有开启时才信任 X-Forwarded-*,不能无条件信任外部头。