1
0
Fork 0
1Panel-Appstore/apps/oauth2-proxy/README.md

107 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# OAuth2 Proxy
[OAuth2 Proxy](https://oauth2-proxy.github.io/oauth2-proxy/) 是一个反向代理与认证中间件,支持通过 Google、GitHub、GitLab、Keycloak、OIDC 等多种身份提供商进行 OAuth2 认证。常用于在已有 Web 服务前增加统一登录认证。
---
## 功能特性
* 支持 OAuth2 和 OpenID Connect (OIDC) 协议
* 多身份提供商支持Google、GitHub、GitLab、Microsoft、Keycloak 等)
* 提供登录保护(适用于内部应用、管理面板等)
* 支持将认证信息传递给后端应用Header / Cookie
* 可与 Nginx、Traefik、Envoy 等反向代理协作使用
---
## 快速开始
### 使用 Docker
```bash
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)
```bash
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`
```ini
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"
```
运行:
```bash
oauth2-proxy --config ./oauth2-proxy.cfg
```
---
## Nginx 反向代理示例
```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` | 允许的邮箱域,`*` 表示允许所有 |
---
## 参考资料
* [官方文档](https://oauth2-proxy.github.io/oauth2-proxy/)
* [GitHub 仓库](https://github.com/oauth2-proxy/oauth2-proxy)