使用你的 IdP 登录
注册好一个外部连接之后,有两种方式让它派上用场。它们共享同一个外部连接、同一套登录机制、同一套账户模型——区别只在于由谁来决定用户要走你的 IdP。
| 模式 | 由谁开启 | 影响谁 |
|---|---|---|
| 应用级管理 | 应用开发者,按应用 | 在该应用上选择「使用 …… 登录」按钮的任何人 |
| 域级管理(强制 SSO) | 域名所有者,通过登录策略 | 某个已验证域名下的每一个账户,对每个应用生效,无法退出 |
两者都是第一层认证方法,因此它们与三层规则模型的其余部分组合的方式,和任何其他方法别无二致。
这是直截了当的「让我应用的用户用我们公司的 IdP 登录」场景。在一个你组织拥有的应用上,添加一条第一层认证规则:
{ "method": "ENTERPRISE_FEDERATION_APPLICATION_MANAGED", "payload": { "connectorAnchor": "Bastion-K7Q2-M9XB-3FNP-Covenant" }}connectorAnchor必须引用一个归该应用所属组织所有的外部连接——这一点在保存规则时强制校验。- Sudomimus 会在认证界面渲染一个「使用
<外部连接显示名称>登录」按钮。 - 一条规则 = 一个按钮。要提供多个 IdP,就添加多条规则(它们之间是 OR 关系,和任何第一层规则一样)。
当用户点击该按钮时,浏览器会被重定向到你的 IdP。OIDC 提供方会把授权码返回固定 callback;SAML 提供方会把签名 Assertion POST 到固定 ACS。Sudomimus 验证任一种证明后,都会像处理其他登录方式一样完成账户关联、身份准入检查、授权确认和令牌签发。对下游应用来说,联合登录产出的是一个普通的 Sudomimus 会话。
联合身份如何关联到账户
Section titled “联合身份如何关联到账户”Sudomimus 首先查找与该外部连接主体绑定的身份:
- 该外部连接的主体已有绑定 → 复用已有账户,即使用户在 IdP 更换了邮箱。
- 主体尚无绑定,且断言的邮箱可信 → 查找邮箱所有者;存在时关联到该账户。邮箱可信要求 IdP 已验证邮箱,且外部连接所属组织当前已验证该邮箱域名的所有权。
- 没有匹配的主体或可信邮箱所有者 → 为该外部连接主体创建新账户。邮箱缺失或不可信时,不会建立邮箱所有权;主体身份仍须通过应用的身份准入规则。
一个账户可以关联多个外部连接的身份。两个 IdP 都断言 [email protected] 时,只有各自的外部连接均满足域名信任条件,才会关联到同一邮箱所有者。仅邮箱文本相同并不足够。
强制 SSO(域级管理)
Section titled “强制 SSO(域级管理)”域级 SSO 要求所拥有域名下的每一个用户只能通过指定 IdP 登录。启用后,通行密钥、邮箱 OTP 和消费级 OAuth 对这些用户不可用。配置由两部分组成:
-
一个已验证域名,其登录策略被设为
SSO_ONLY,并绑定到你组织的某个外部连接。 -
每个接受这类登录的应用上启用第一层方法
ENTERPRISE_FEDERATION_DOMAIN_MANAGED:{"method": "ENTERPRISE_FEDERATION_DOMAIN_MANAGED","payload": {}}
负载是空的——与应用级管理不同,外部连接不在规则里指名。它在登录时由用户的邮箱域名解析得出:邮箱域名 → 已验证域名 → 绑定到该域名 SSO_ONLY 策略的外部连接。因此,另一个组织拥有的域名也可以决定登录使用的 IdP;应用接受由用户域名所有者指定的 IdP。
被管控的用户会经历什么
Section titled “被管控的用户会经历什么”- 邮箱优先的流程。 当一个被 SSO 管控的用户输入邮箱时,Sudomimus 会压制其他所有方法,只提供「使用
<外部连接>继续」这一条路径。 - 无邮箱的流程(无用户名通行密钥、消费级 OAuth、Steam)。用户只有在认证之后才能被识别,因此 Sudomimus 会在 realize 时拦住他们、把他们重定向进 SSO 流程,并在第二趟完成登录。
- 是确认屏,而非静默跳转。 当只有一个可满足的外部连接时,登录页面会显示一个「使用
<外部连接>继续」的屏幕,而不是自动重定向。如果多个已验证域名要求不同的外部连接,界面会改为显示终止性的 SSO 权威冲突说明,不会让用户选择绕过哪一个域名所有者。 - 新员工。 一个邮箱位于强制-SSO 域名下的全新用户,会在首次登录时经由 IdP 完成注册(registration-via-SSO)——不存在单独的注册步骤。
没有开启这条规则的应用
Section titled “没有开启这条规则的应用”一个没有列出 ENTERPRISE_FEDERATION_DOMAIN_MANAGED 的应用,会直接拒绝被 SSO 管控的用户。Sudomimus 不会替应用悄悄增加一种登录方式;强制 SSO 仍然遵守第一层规则的默认拒绝。
由于登录需要新的 IdP 断言,一个 IdP 账户已被停用的离职员工无法再开启新会话。已经签发的访问令牌不会被立即撤销,它们会按 TTL 过期(默认 3 小时)。已有刷新会话只有在其原始登录仍满足当前域名策略时才会继续:Session API /refresh 和 OIDC refresh-token grant 会重新检查 BLOCK_ALL 与 SSO_ONLY,因此把域名切到 BLOCK_ALL,或把 SSO_ONLY 重新绑定到该会话未使用的外部连接,会在下一次刷新时切断它。仅在 IdP 侧停用用户,并不会让一个已有的 Sudomimus 刷新令牌反向联系 IdP。
如果同一账户后来拥有分别受不同 IdP 管控的已验证邮箱,任何一个 IdP 都不会胜出。交互登录、授权码兑换、设备/原生签发和刷新都会拒绝,直到冲突被修复。多个域名要求同一个外部连接时仍可正常使用。