# 接入企业登录（OIDC / OAuth）

把公司已有的身份提供方（Microsoft Entra ID、Google Workspace、Okta、Keycloak、Authing 或其他 OpenID Connect / OAuth 2.0 提供方）接到 Raise 后，成员可以在登录页用公司账号登录。

Raise 这边的设置在「我的组织」→「安全」→「企业登录」，界面说明见[连接器与集成](/admin/connectors)。每个组织最多接入 10 个提供方。

## 开始前准备

- 身份提供方的管理员权限，能注册应用（客户端）并拿到 Client ID 和 Client Secret。
- Raise 里「管理员」角色的账号。

## 登记重定向地址

1. 打开 Raise 的「企业登录」页。顶部「在你们的提供方里登记这个重定向地址」列出两条地址，每条旁有复制按钮。
2. 在提供方的应用里，把**两条都**填进「重定向 URI」。
3. 回到 Raise，点右上角「接入提供方」，选「提供方类型」，按下面对应的一节填写。
4. 填好后点「接入」，提示「已接入，记得在列表里打开“登录页提供”」。
5. 在列表里打开这一行的「登录页提供」开关。

## Microsoft Entra ID

1. 在 Entra 里注册一个 Web 应用，重定向地址填[上面](#redirect)给出的地址。
2. 在 Raise 选「Microsoft Entra ID (Azure AD)」。「Issuer」已预填为 `https://login.microsoftonline.com/<租户 ID>/v2.0`，把 `<租户 ID>` 换成你们的目录（租户）ID。
3. 填「Client ID」和「Client Secret」。

## Google Workspace

1. 在 Google Cloud 创建 OAuth 客户端，类型选 Web 应用，重定向地址填[上面](#redirect)给出的地址。
2. 在 Raise 选「Google Workspace」。「Issuer」已预填为 `https://accounts.google.com`。
3. 填「Client ID」和「Client Secret」。Google 会验证邮箱。

## Okta

1. 在 Okta 创建 OIDC Web 应用，重定向地址填[上面](#redirect)给出的地址。
2. 在 Raise 选「Okta」。「Issuer」用默认授权服务器的地址，已预填为 `https://<你们的域名>.okta.com`，把尖括号部分换成真实值。
3. 填「Client ID」和「Client Secret」。

## Keycloak

1. 在 Keycloak 的 realm 里创建一个 OpenID Connect 客户端（保密），重定向地址填[上面](#redirect)给出的地址。
2. 在 Raise 选「Keycloak」。「Issuer」已预填为 `https://<主机>/realms/<realm>`，把尖括号部分换成真实值。
3. 填「Client ID」和「Client Secret」。

## Authing

Authing 可以把企业微信、钉钉、飞书等桥接成标准 OIDC，是接入这些的常用办法。

1. 在 Authing 创建应用，重定向地址填[上面](#redirect)给出的地址。
2. 在 Raise 选「Authing」。「Issuer」已预填为 `https://<应用域名>.authing.cn/oidc`，把尖括号部分换成真实值。
3. 填「Client ID」和「Client Secret」。

## 其他 OpenID Connect

任何标准的 OIDC 提供方。

1. 在提供方创建客户端，重定向地址填[上面](#redirect)给出的地址。
2. 在 Raise 选「其他 OpenID Connect」，填它的「Issuer」地址（完整的 https 地址）。
3. 点「Issuer」旁的「测试连接」。读到发现文档时显示「连接正常」和发行者地址；不对时显示「连不上或不对」和原因。
4. 填「Client ID」和「Client Secret」，按需改「Scope」（空格分隔，默认 `openid profile email`）。

预设的提供方也可以用「测试连接」检查 Issuer。

## 其他 OAuth 2.0

没有 OIDC 发现文档、但提供授权、令牌、用户信息三个接口的提供方。

1. 在提供方创建客户端，重定向地址填[上面](#redirect)给出的地址。
2. 在 Raise 选「其他 OAuth 2.0」，填「授权地址」「令牌地址」「用户信息地址」（都是完整的 https 地址）。
3. 填「用户标识字段」：用户信息里标识一个人的字段，通常是 `sub` 或 `id`，默认 `sub`。
4. 填「Client ID」「Client Secret」和「Scope」。

## 企业微信、钉钉、飞书

企业微信、钉钉、飞书不是标准 OIDC，不能在「企业登录」里直接接入。可以：

- 在「协作平台」里直接连接，见[接入企业微信](/connect/wecom)、[接入飞书](/connect/feishu)、[接入钉钉](/connect/dingtalk)。连接后，它们的扫码登录也会出现在「企业登录」列表里，但只能去「协作平台」修改。
- 或者经 [Authing](#authing)、[Keycloak](#keycloak) 等桥接后接入。

## 首次登录规则

「第一次用公司账号登录时」有两个选项：

| 选项 | 默认 | 说明 |
|---|---|---|
| 「自动创建账号」 | 开 | 第一次用公司账号登录的人自动建账号（成员角色）。关闭后仅已邀请的成员可登录 |
| 「按已验证邮箱并入已有账号」 | 关 | 邮箱已验证、且和某个账号相同的人并入那个账号。仅在提供方保证邮箱真实时打开（比如 Google Workspace、Entra），否则可被冒充 |

## 常见问题

#### 提示「Issuer 要填完整的 https 地址（把尖括号里的占位换成真实值）」？
预填的 Issuer 里还留着尖括号占位，换成你们的真实值。

#### 接入后登录页上没有这个按钮？
新接入的提供方默认「未启用」。在列表里打开「登录页提供」开关。

#### 删除提供方会怎样？
成员将无法再用它登录，账号和数据不受影响。
