跳转到内容

域名登录策略

查看 Markdown

组织持有已验证域名后,就可以为它设置登录策略。该策略在整个平台生效,适用于每个拥有该域名已验证邮箱的账户,而不只影响组织自己的应用。由于组织已经证明对域名的 DNS 控制权,Sudomimus 允许它决定该邮箱命名空间的登录方式。

策略 对在该域名下有邮箱的账户的影响
ALLOW_ALL 无限制。这是每个已验证域名的默认值(也是「未设置策略」的含义)。
BLOCK_ALL 平台范围内拒绝一切登录,不论用什么方法。
SSO_ONLY 一切登录都必须走某个指定的外部连接——你的 IdP。其他任何方法(通行密钥、邮箱 OTP、消费级 OAuth、Steam、原生密钥)都被拒绝。

SSO_ONLY 在使用你的 IdP 登录中有完整讲解;本页其余部分聚焦于这三者各自的行为。

平台会在登录进入准入判定阶段时检查该策略。它位于应用身份准入规则之前,并具有以下重要特性:

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(对应多个不同外部连接)被拒。

  • 它管控认证,不管控授权。 满足 SSO_ONLY 的登录仍需通过应用的第二层身份准入规则和第三层返回规则。强制 SSO 不会授予访问权限,只会限制用户如何证明身份。
  • 它不会撤销现有的访问令牌。 现有访问令牌会一直有效,直到过期(默认 3 小时)。令牌刷新则不同:Session API /refresh 和 OIDC 刷新令牌授权会再次检查当前域名登录策略。如果 BLOCK_ALL 生效,下一次刷新会被拒绝。如果原始登录不再满足变更后的 SSO_ONLY 外部连接,或不同域名要求不同的 SSO_ONLY 外部连接,下一次刷新也会被拒绝。
  • 它不触碰账户的邮箱所有权。 改回 ALLOW_ALL 即可恢复正常访问——账户上没有任何东西被删除。

登录策略在 With 门户的已验证域名详情页中设置。只有拥有该域名的组织的唯一 Owner可以修改策略。如果组织有多位 Owner,任何一人都不能单方面改变该域名下所有人的登录方式。