54 lines
3.8 KiB
Markdown
Executable File
Raw Permalink 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.

---
outline: deep
---
# 使用 Cloudflare Access 作为 OAuth2 提供方
相较于 GithubCloudflare Access 对于中国大陆用户更加友好。如您当前使用 Github、Gitlab、Gitee 作为管理员账户登录时遇到问题,您可以考虑切换 Cloudflare Access 作为 OAuth2 提供方
## 示例配置:
```yaml
Oauth2:
Admin: 701b9ea6-9f56-48cd-af3e-cbb4bfc1475c
ClientID: 3516291f53eca9b4901a01337e41be7dc52f565c8657d08a3fddb2178d13c5bf
ClientSecret: 0568b67c7b6d0ed51c663e2fe935683007c28f947a27b7bd47a5ad3d8b56fb67
Endpoint: "https://xxxxx.cloudflareaccess.com"
Type: cloudflare
```
## 配置说明:
| 参数 | 获取方式 |
|-----------------------|-----------------------------------------------------------------------------|
| Admin | `My Team` -> `Users` -> `<具体用户>` -> `User ID` |
| ClientID/ClientSecret | `Access` -> `Application` -> `Add an Application` <br/> -> `SaaS` -> `OIDC` |
| Endpoint | `Access` -> `Application` -> `Application URL` -> `只保留协议+域名的部分,路径不需要` |
### 新建 SaaS-OIDC 应用流程
前往 Zero Trust Dashboard[https://one.dash.cloudflare.com/](https://one.dash.cloudflare.com/)选择或新建一个账户Account然后按照以下步骤操作
1. `My Team` -> `Users` -> 点击`<具体用户>` -> 获取 `User ID` 并保存 *(如果是第一次使用 Zero TrustUsers 列表会为空,可暂时跳过这一步;你需要完成一次验证后,用户才会出现在 Users 列表中)*
2. `Access` -> `Applications` -> `Add an Application`;
3. 选择 `SaaS`,在 `Application` 字段中输入自定义的应用名称(例如 `nezha`),选择 `OIDC` 后点击 `Add application`;
4. `Scopes` 选择 `openid`, `email`, `profile`, `groups`;
5.`Redirect URLs` 中填写你的 Dashboard Callback 地址,例如 `https://dashboard.example.com/oauth2/callback`;
6. 分别记录 `Client ID``Client Secret``Issuer` 地址中的协议与域名部分,例如 `https://xxxxx.cloudflareaccess.com`;
7. 编辑 Dashboard 配置文件(通常位于 `/opt/nezha/dashboard/data/config.yaml`),参照示例配置修改 `OAuth2` 设置,并重启 Dashboard 服务。
### 身份验证策略配置
在完成 Dashboard 设置后,您还需要在 Zero Trust Dashboard 中配置身份验证策略,路径为:`Access` -> `Applications` -> `<应用名>` -> `Policies`。您可以选择多种 SSO 验证方式,包括邮件 OTP 验证、硬件密钥验证等,详细配置请参考 [Cloudflare Zero Trust 文档](https://developers.cloudflare.com/cloudflare-one/)。
### 策略配置示例One-time PIN
默认使用邮件 OTP 验证方式:
1. `Access` -> `Applications` -> `<应用名>` -> `Policies` -> `Add a policy`;
2. 设置一个 `Policy Name`,例如 `OTP``Action` 设置为 `Allow`;
3.`Configure rules` 下新增一条 `Include` 规则,`Selector` 选择 `Emails`,在文本框中输入你的邮箱地址;
4. 点击 `Save policy` 保存策略。
### 测试策略
1. 在配置正确的情况下,访问 Dashboard 登录界面,会显示为 `使用 Cloudflare 账号登录`,点击登录会跳转到 Cloudflare Access 登录页面;
2. 输入前面配置的 Email 地址,点击 `Send me a code`,输入收到的验证码,即可登录 Dashboard
3. 如果在之前的步骤中,未在 `Admin` 中未填写 `User ID`,登录后会提示错误信息:“该用户不是本站点管理员,无法登录”。此时需要在 `My Team` -> `Users` 中找到对应的用户,点击用户名获取 `User ID` 并填写到 Dashboard 配置文件里的 `Admin` 部分,重启 Dashboard 服务后再次尝试登录。