域名登录策略
组织持有已验证域名后,就可以为它设置登录策略。该策略在整个平台生效,适用于每个拥有该域名已验证邮箱的账户,而不只影响组织自己的应用。由于组织已经证明对域名的 DNS 控制权,Sudomimus 允许它决定该邮箱命名空间的登录方式。
| 策略 | 对在该域名下有邮箱的账户的影响 |
|---|---|
ALLOW_ALL |
无限制。这是每个已验证域名的默认值(也是「未设置策略」的含义)。 |
BLOCK_ALL |
平台范围内拒绝一切登录,不论用什么方法。 |
SSO_ONLY |
一切登录都必须走某个指定的外部连接——你的 IdP。其他任何方法(通行密钥、邮箱 OTP、消费级 OAuth、Steam、原生密钥)都被拒绝。 |
SSO_ONLY 在使用你的 IdP 登录中有完整讲解;本页其余部分聚焦于这三者各自的行为。
强制执行的机制
Section titled “强制执行的机制”平台会在登录进入准入判定阶段时检查该策略。它位于应用身份准入规则之前,并具有以下重要特性:
flowchart TD
Start["账户处于启用状态"] --> Policies["汇总所有已验证邮箱域名的策略"]
Policies --> Block{"是否存在 BLOCK_ALL?"}
Block -->|是| Blocked["拒绝<br/>EmailDomainBlocked"]
Block -->|否| Authorities{"存在多少个不同的 SSO_ONLY 外部连接?"}
Authorities -->|多于一个| Conflict["拒绝<br/>SsoAuthorityConflict"]
Authorities -->|恰好一个| Satisfied{"本次登录是否使用该外部连接?"}
Satisfied -->|否| RequiresSso["拒绝<br/>EmailDomainRequiresSso"]
Satisfied -->|是| AppRules["继续执行应用的<br/>Layer 2 与 Layer 3 规则"]
Authorities -->|没有| AppRules
这与账户级停用的处理方式相似。系统先检查账户是否启用,再检查域名登录策略,最后执行第二层身份准入规则。因此,这是一项平台级策略,而不是某个应用的规则。
被该策略拒绝的登录,会以 wire reason EmailDomainBlocked(对应 BLOCK_ALL)、EmailDomainRequiresSso(对应单个但未满足的 SSO_ONLY 外部连接),或 SsoAuthorityConflict(对应多个不同外部连接)被拒。
策略做什么、不做什么
Section titled “策略做什么、不做什么”- 它管控认证,不管控授权。 满足
SSO_ONLY的登录仍需通过应用的第二层身份准入规则和第三层返回规则。强制 SSO 不会授予访问权限,只会限制用户如何证明身份。 - 它不会撤销现有的访问令牌。 现有访问令牌会一直有效,直到过期(默认 3 小时)。令牌刷新则不同:Session API
/refresh和 OIDC 刷新令牌授权会再次检查当前域名登录策略。如果BLOCK_ALL生效,下一次刷新会被拒绝。如果原始登录不再满足变更后的SSO_ONLY外部连接,或不同域名要求不同的SSO_ONLY外部连接,下一次刷新也会被拒绝。 - 它不触碰账户的邮箱所有权。 改回
ALLOW_ALL即可恢复正常访问——账户上没有任何东西被删除。
登录策略在 With 门户的已验证域名详情页中设置。只有拥有该域名的组织的唯一 Owner可以修改策略。如果组织有多位 Owner,任何一人都不能单方面改变该域名下所有人的登录方式。
认领域名登录策略需要一个已验证的域名——从这里开始。
使用你的 IdP 登录完整讲解 SSO_ONLY:强制某个域名的用户都走你的外部连接。