单点登录的作用
启用单点登录(SSO)后,组织成员通过公司的身份提供商登录 ModelRiver 控制台,而不是使用 ModelRiver 密码。当有人离职、您在身份提供商处停用其账户后,对方就无法再进入您的组织。
SSO 覆盖的是控制台,也就是配置项目、工作流、供应商密钥和 API 密钥的人。它不会改变您的应用调用 API 的方式,应用仍然使用 API 密钥。
ModelRiver 支持 OpenID Connect(OIDC)。Okta、Microsoft Entra ID、Google Workspace、Auth0 以及大多数身份提供商都提供该协议。
SSO 在 Scale 和 Custom 套餐中提供。所有者和管理员可以查看设置,只有所有者可以修改。
设置步骤
打开组织菜单,选择 Organization settings,再选择 Single sign-on。设置分为三步,在全部完成之前,成员的登录方式不会有任何变化。
1. 连接身份提供商
- 选择您的提供商:Google Workspace、Okta、Microsoft Entra ID 或 Other。
- 在身份提供商处创建一个 OpenID Connect Web 应用。
- 登记 Single sign-on 页面上显示的 Redirect URI。有些提供商称之为登录重定向 URI 或回调 URL。
- 回到 ModelRiver,填入页面要求的信息,以及该应用的 Client ID 和 Client secret,然后保存。
页面要求填写的内容取决于提供商:
| 提供商 | 需要填写 |
|---|---|
| Google Workspace | 无需额外填写 |
| Okta | 您的 Okta 域名,例如 acme.okta.com |
| Microsoft Entra ID | 您的目录(租户)ID |
| Other | 提供商的 issuer URL |
其他任何 OpenID Connect 提供商,以及 Okta 自定义授权服务器,请选择 Other。
保存时,ModelRiver 会访问该提供商,确认它是可用的 OpenID Connect 提供商。Issuer URL 必须使用 HTTPS,并且必须与提供商自己报告的值完全一致。如果不一致,错误信息会显示应填写的值。
Client secret 以加密方式存储,之后不会再显示。如需更换,填入新的值并保存。
2. 验证邮箱域名
添加公司使用的邮箱域名,例如 company.com。ModelRiver 会显示一条 DNS TXT 记录:
| 字段 | 示例 |
|---|---|
| 类型 | TXT |
| 名称 | _modelriver-challenge.company.com |
| 值 | modelriver-verify=... |
在 DNS 服务商处添加该记录,然后选择 Verify。DNS 变更可能需要几分钟才会生效。
只有邮箱地址属于已验证域名的人才能通过 SSO 登录。这可以防止身份提供商以不属于贵公司的地址为某人登录。一个域名同一时间只能由一个组织验证,gmail.com 等公共邮箱服务商不能添加。最多可添加 20 个域名。
3. 试用
在 Single sign-on 页面选择 Sign in with SSO,通过身份提供商登录一次。这样可以在要求所有人使用之前,先确认连接对您本人可用。
此后,成员可以在登录页选择 Continue with SSO 并输入工作邮箱。
各提供商设置指南
Okta
- 在 Okta Admin Console 中打开 Applications,选择 Create App Integration,然后选择 OIDC - OpenID Connect 和 Web Application。
- 在 Sign-in redirect URIs 下添加 ModelRiver 提供的 Redirect URI。
- 分配应当拥有访问权限的人员或群组。
- 在 ModelRiver 中选择 Okta,填入您的 Okta 域名,例如
your-company.okta.com,并填入应用 General 选项卡中的 Client ID 和 Client secret。
Microsoft Entra ID
- 在 Entra 管理中心打开 App registrations,选择 New registration。
- 在 Redirect URI 下选择 Web,添加 ModelRiver 提供的 Redirect URI。
- 在 Certificates & secrets 下创建客户端密码并复制其值。
- 在 Token configuration 下为 ID 令牌添加可选声明
email,以便 ModelRiver 收到每个人的邮箱地址。 - Entra ID 通常不会说明邮箱地址是否已验证。如果登录失败并提示 "Your identity provider didn't confirm your email address",请在 Single sign-on 页面关闭 Only accept verified email addresses(参见已验证的邮箱地址)。
- 在 ModelRiver 中选择 Microsoft Entra ID,填入您的目录(租户)ID,并将应用程序(客户端)ID 作为 Client ID。共享的
common和organizations端点不能使用,因为它们会接受任何 Microsoft 租户的账户。
Google Workspace
- 在 Google Cloud 控制台打开 APIs & Services,再打开 Credentials,创建类型为 Web application 的 OAuth client ID。
- 在 Authorized redirect URIs 下添加 ModelRiver 提供的 Redirect URI。
- 将 OAuth 同意屏幕的用户类型设为 Internal,这样只有您 Workspace 中的人可以登录。
- 在 ModelRiver 中选择 Google Workspace。
使用 Google 时,只有属于您已验证域名的 Google Workspace 账户可以登录。个人 Google 账户即使使用公司邮箱地址,也会被拒绝。
已验证的邮箱地址
默认情况下,ModelRiver 只接受身份提供商标记为已验证的邮箱地址。Okta 和 Google Workspace 都会这样标记。
有些提供商(包括 Microsoft Entra ID)通常不提供这一标记。对于这类提供商,所有者可以关闭 Only accept verified email addresses。关闭后,只要提供商未对地址作出说明,该地址就会被接受。关闭之前,请确认成员无法在身份提供商处自行修改邮箱地址。被提供商标记为未验证的地址始终会被拒绝,并且地址仍须属于您已验证的域名。
谁可以登录
默认情况下,SSO 只为已经是组织成员的人登录。请先在 Team 页面邀请他们。
如果希望新成员无需邀请即可加入,请开启 Let new people join by signing in。此后,凡是身份提供商放行、且邮箱地址属于已验证域名的人,首次登录时就会成为成员。您可以选择他们以 Viewer 还是 Editor 身份加入。新成员不会被设为管理员,如需调整角色,请在 Team 页面修改。加入仍然计入套餐的成员数量上限。
如果某人已有使用相同邮箱地址的 ModelRiver 账户,该账户会保留。其首次 SSO 登录会将账户与您的身份提供商关联。
如果成员为自己的 ModelRiver 账户开启了双重验证,通过 SSO 登录后仍需输入验证码。
要求使用单点登录
SSO 可用之后,所有者可以开启 Require single sign-on。开启后:
- 成员只能通过以 SSO 登录的会话访问组织的项目、日志和设置。
- 每 12 小时需要重新通过 SSO 登录一次。因此,在身份提供商处被移除的人会在 12 小时内失去对组织的访问权限。
- 使用密码、Google 或 GitHub 登录仍可访问成员的其他组织,但不能访问您的组织。
- 邮箱地址不属于已验证域名的成员将无法再进入。开启该要求时,Single sign-on 页面会列出这些成员。
只有在您本人已通过 SSO 登录之后,才能开启该要求,这样设置上的错误不会把所有人锁在外面;您自己的账户也必须已开启双重验证,这样即使身份提供商无法使用,您仍能登录(见下文)。
在要求使用 SSO 期间,不能更换身份提供商。请先关闭该要求,更换提供商,您本人通过它登录一次,然后再重新开启。Client ID 和 Client secret 仍可更新。更换为其他提供商后,成员在下次登录时会重新按邮箱地址匹配。
身份提供商不可用时
只要组织所有者的账户开启了双重验证,所有者仍可使用密码登录。因此要求使用 SSO 必须先开启双重验证,并请在要求 SSO 期间保持开启。每一次这样的登录都会记录在审计日志中。
如果连接被移除、没有任何已验证域名,或者组织换到了不含 SSO 的套餐,该要求将不再生效,成员恢复原先的登录方式。
会话
每次登录都会创建一个会话,您可以在 Settings 的 Active sessions 中查看,其中包括浏览器、登录方式和最近使用时间。选择会话旁的 Sign out 即可结束该会话。被登出的会话会在下一次请求时失效。
重置密码会让您在所有设备上登出。当成员被移出组织时,其通过该组织 SSO 登录的会话也会随之结束。
审计日志
组织审计日志会记录 SSO 的设置与变更、域名的添加、验证和移除、该要求的开启或关闭,以及每一次登录(包括失败的登录)。
故障排查
- "Single sign-on isn't set up for this email address":该地址的域名尚未被任何已开启 SSO 的组织验证。请检查拼写,或使用其他方式登录。
- "You don't have access to this organization yet":您不是成员,且未开启通过登录加入。请让管理员邀请您。
- "Your email address isn't on a domain this organization has verified":身份提供商报告的地址属于其他域名。请让所有者验证该域名。
- "Sign in with your company's Google Workspace account":您选择了个人 Google 账户。请在 Google 登录界面选择您的 Workspace 账户。
- "The TXT record wasn't found yet":DNS 记录尚未生效。请检查名称和值,等待几分钟后再次选择 Verify。
- "The provider reports its issuer as ...":请将该值原样填入 Issuer URL。
- "Your identity provider didn't confirm your email address":提供商没有将该地址标记为已验证。参见已验证的邮箱地址。
- Microsoft Entra ID 登录失败:请确认已为 ID 令牌添加
email可选声明。