3.0 KiB
3.0 KiB
OAuth2 Proxy
OAuth2 Proxy 是一个反向代理与认证中间件,支持通过 Google、GitHub、GitLab、Keycloak、OIDC 等多种身份提供商进行 OAuth2 认证。常用于在已有 Web 服务前增加统一登录认证。
功能特性
- 支持 OAuth2 和 OpenID Connect (OIDC) 协议
- 多身份提供商支持(Google、GitHub、GitLab、Microsoft、Keycloak 等)
- 提供登录保护(适用于内部应用、管理面板等)
- 支持将认证信息传递给后端应用(Header / Cookie)
- 可与 Nginx、Traefik、Envoy 等反向代理协作使用
快速开始
使用 Docker
docker run -p 4180:4180 \
-e OAUTH2_PROXY_PROVIDER=google \
-e OAUTH2_PROXY_CLIENT_ID=<client-id> \
-e OAUTH2_PROXY_CLIENT_SECRET=<client-secret> \
-e OAUTH2_PROXY_COOKIE_SECRET=$(openssl rand -base64 32 | head -c 32 | base64) \
-e OAUTH2_PROXY_REDIRECT_URL=https://your.domain.com/oauth2/callback \
-e OAUTH2_PROXY_EMAIL_DOMAINS=* \
quay.io/oauth2-proxy/oauth2-proxy:latest
容器启动后,访问 http://localhost:4180 即会跳转到 OAuth2 提供商登录。
使用 Helm (Kubernetes)
helm repo add oauth2-proxy https://oauth2-proxy.github.io/manifests
helm repo update
helm install oauth2-proxy/oauth2-proxy \
--generate-name \
--set config.clientID=<client-id> \
--set config.clientSecret=<client-secret> \
--set config.cookieSecret=$(openssl rand -base64 32 | head -c 32 | base64) \
--set config.provider=google
配置示例
基本配置文件 oauth2-proxy.cfg
provider = "oidc"
client_id = "your-client-id"
client_secret = "your-client-secret"
redirect_url = "https://your.domain.com/oauth2/callback"
oidc_issuer_url = "https://accounts.example.com"
email_domains = ["*"]
cookie_secret = "random-cookie-secret"
运行:
oauth2-proxy --config ./oauth2-proxy.cfg
Nginx 反向代理示例
server {
listen 443 ssl;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:4180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
常用环境变量
| 变量名 | 说明 |
|---|---|
OAUTH2_PROXY_PROVIDER |
身份提供商类型,如 google、github、oidc |
OAUTH2_PROXY_CLIENT_ID |
OAuth2 客户端 ID |
OAUTH2_PROXY_CLIENT_SECRET |
OAuth2 客户端密钥 |
OAUTH2_PROXY_COOKIE_SECRET |
随机字符串,用于加密 Cookie |
OAUTH2_PROXY_REDIRECT_URL |
回调地址 |
OAUTH2_PROXY_EMAIL_DOMAINS |
允许的邮箱域,* 表示允许所有 |