自定义 OAuth 提供商

管理员指南

自定义 OAuth 提供商

添加任意符合 OIDC 标准的自定义登录方式

除了内置的 OAuth 提供商外,Root 可以添加任意符合 OIDC 标准的自定义登录方式。使用 Root 账号登录后,进入系统设置页面(`/console/setting`),找到「自定义 OAuth」区域。Web 控制台与参考设计一致,正在对接中;当前演示数据与登录页通过 localStorage 联动。

添加自定义 OAuth 提供商

easyapi.com/console/setting#custom-oauth

自定义 OAuth 提供商

配置自定义 OAuth 提供商,支持 GitHub Enterprise、GitLab、Gitea、NextCloud、Keycloak、Casdoor 等兼容 OAuth 2.0 / OpenID Connect 协议的身份提供商。 回调 URL 格式:{网站地址}/oauth/{slug}

+ 添加 OAuth 提供商
图标名称Slug状态Client ID操作
暂无自定义 OAuth 提供商

系统设置底部「自定义 OAuth」区域示意:说明横幅、添加按钮与空列表

进入配置区域

Root 登录后进入 /console/setting ,滚动至页面底部「自定义 OAuth 提供商」卡片。与 系统设置 其它 Tab 同属 option / custom_oauth_provider 配置范畴。

添加提供商

点击「+ 添加 OAuth 提供商」打开表单,填写名称、Slug、Client ID/Secret 与 OAuth 端点。Slug 创建后不建议修改,否则需在 IdP 侧同步更新回调 URL。

回调 URL 格式

在 IdP 应用配置中将 Redirect URI 设为:

{网站地址}/oauth/{slug}

其中「网站地址」为系统设置中的 ServerAddress(如 https://ai.example.com),{slug} 与表单中 Slug 字段一致。

提供商列表

字段说明
图标icon提供商 Logo URL 或图标标识
名称name登录按钮展示名称,如「企业 GitLab」
Slugslug唯一标识,用于回调路径 `/oauth/{slug}`
状态enabled启用后出现在登录/注册页第三方区域
Client IDclient_id在 IdP 注册应用后获得的客户端 ID(列表中可脱敏展示)
操作编辑、启用/禁用、删除

配置 Client ID / Secret

  1. 在 IdP(GitLab、Keycloak 等)创建 OAuth / OIDC 应用,记录 Client ID 与 Client Secret。
  2. 将回调 URL 配置为 `{ServerAddress}/oauth/{slug}`,slug 与 EasyAPI 中填写的 Slug 完全一致。
  3. 在 EasyAPI 系统设置 → 自定义 OAuth →「添加 OAuth 提供商」填写端点与 scopes;若提供 well_known 可简化端点配置。
  4. 保存后启用(enabled=1);仅 enabled 的提供商会出现在 `/login` 与 `/register` 底部第三方区域。

表单字段说明

配置项字段说明
名称name必填;展示在登录按钮上
Slugslug必填;小写英文,全局唯一,决定回调 URL 路径
图标icon可选;图标 URL
Client IDclient_idOAuth 应用 Client ID
Client Secretclient_secretOAuth 应用密钥,保存后不在列表明文展示
授权端点authorization_endpointOAuth authorize URL
Token 端点token_endpointOAuth token URL
用户信息端点user_info_endpoint获取用户 profile 的 API
Scopesscopes默认 openid profile email,按 IdP 要求调整
Well-Knownwell_known可选;OIDC `.well-known/openid-configuration` 地址,可自动发现端点
用户 ID 字段user_id_field从 userinfo JSON 读取唯一 ID 的键,默认 sub
用户名字段username_field映射为系统 username,默认 preferred_username
显示名字段display_name_field映射为 nickname,默认 name
邮箱字段email_field映射为 email,默认 email
授权样式auth_style0=参数传递 client_secret;1=Header 传递(部分 IdP 要求)
访问策略access_policy可选 JSON;限制允许登录的用户范围
拒绝提示access_denied_message策略拒绝时向用户展示的文案

数据表 custom_oauth_provider 字段与上述表单一一对应;slug 列有唯一索引。

端点与 scopes

  • 标准 OIDC:填写 well_known 后可自动解析 authorization / token / userinfo 端点
  • 纯 OAuth 2.0:需手动填写 authorization_endpoint、token_endpoint、user_info_endpoint
  • Scopes 示例:openid profile email(OIDC)或 read:user user:email(GitHub)
  • 内置 OAuth 路由:GET /api/oauth/githubwechat 等与自定义 /oauth/{slug} 并存,互不影响

测试 OAuth 回调

  1. 退出当前账号,打开 `/login`,确认底部出现新添加的 OAuth 按钮。
  2. 点击按钮应跳转至 IdP 授权页;授权成功后回跳 `{网站地址}/oauth/{slug}` 并完成登录或注册绑定。
  3. 在「个人设置 → 账户绑定」验证第三方账号是否已关联。
  4. 若失败,检查 Client Secret、回调 URL、scopes 及 userinfo 字段映射是否与 IdP 返回 JSON 一致。

用户侧 OAuth 登录说明见 注册与登录 文档中的「第三方 OAuth 登录」章节。

相关说明

  • 系统设置概览见 系统设置
  • 账户绑定见 个人设置/setting
  • enabled=1 的提供商会出现在登录页;禁用后已绑定用户不受影响