自定义域名
在服务上线后更改域名可能会带来麻烦,因为你的应用代码和集成可能仍然引用旧域名。为确保平滑迁移,我们建议在创建生产租户时一开始就设置自定义域名。
你的 Logto 租户默认会有一个免费的域名 {{tenant-id}}.app.logto。不过,你可以通过使用自定义域名(如 auth.example.com)来提升用户体验和品牌认知度。
你的自定义域名会用于多个功能:
- 登录和注册页面 的 URL
- 社交连接器 或 企业单点登录 (SSO) 连接器 的回调 URI
- Passkey 绑定链接的 URL(用户绑定 Passkey 后更改域名可能会阻止其认证 (Authentication))
- 用于将 Logto 集成到你的应用的 SDK 端点
多个自定义域名
Logto 现在支持为单个租户配置多个自定义域名,让你的登录页面可以通过多个品牌域名访问。
按套餐限制:
- 开发租户:可免费添加最多 2 个自定义域名(用于测试)
- 免费套餐:可免费添加 1 个自定义域名
- 专业套餐:包含 1 个自定义域名,可通过附加包最多添加至 10 个自定义域名
- 企业套餐:如需超过 10 个自定义域名或有定制需求,请联系我们
详细信息请参见 Logto 价格表。
使用多个自定义域名,你可以:
- 为不同地区、本地化、应用、组织 (Organizations) 或顶级域名使用不同域名
- 在登录前后保持一致的品牌体验,增强信任感
- 通过 自定义界面 提供区域或品牌专属的认证 (Authentication) 体验
在控制台配置自定义域名
要在 Logto 控制台添加新的自定义域名,请按以下步骤操作:
-
进入 控制台 > 设置 > 域名。
-
在“添加自定义域名”区域,输入你的子域名(如
auth.example.com、auth.us.example.com),点击“添加域名”。
-
复制表格中的 CNAME 值
domains.logto.app,前往你的域名 DNS 服务商添加记录。
-
等待验证和 SSL 处理。
- 我们会每 10 秒自动验证一次记录,直到自定义域名添加成功。只需确保输入的域名或 DNS 记录准确无误。
- 验证通常只需几分钟,但根据 DNS 服务商可能最长需要 24 小时。你可以在此过程中自由离开页面。
如需添加多个自定义域名,只需对每个要配置的域名重复上述步骤。
故障排查
SSL 证书问题
如果你在设置自定义域名时遇到 SSL 证书问题,可能与你的 DNS 配置中的 CAA 记录有关。CAA 记录指定了哪些证书颁发机构(CA)有权为你的域名颁发证书。如果你使用了 CAA 记录,需要为 Logto 授权 "letsencrypt.org" 和 "pki.goog" 这两个 CA。
如需排查和解决与 CAA 记录相关的 SSL 证书问题,请参考 Cloudflare 的 CAA 记录文档。
“The hostname is associated with a held zone” 错误
如果你在添加自定义域名时遇到 “The hostname is associated with a held zone, please contact the owner to have the hold removed” 错误,说明该域名已在 Cloudflare 区域中,并被设置为 “Zone Hold” 状态。详见 Cloudflare 文档。
要解决此问题,你需要释放该区域的 hold。请按照上述链接中的说明在 Cloudflare 解除 zone hold。
Cloudflare 托管域名连接超时(错误码 522)
如果你的域名托管在 Cloudflare,请为该 CNAME 记录关闭 Cloudflare 代理。
设置自定义域名后出现 “Redirect URI does not match” 错误
如果在添加自定义域名后出现 “redirect URI does not match” 错误,你需要将 SDK 配置更新为使用自定义域名作为端点。
关于“主域名”:
Logto 没有单独的“主域名”设置。添加自定义域名后,你的自定义域名和默认 {tenant-id}.logto.app 域名都会保持有效。你在 SDK 的 endpoint 参数中配置的域名决定了认证 (Authentication) 流程会使用哪个域名。
解决方法:
在 SDK 初始化时,将 endpoint 参数更新为你的自定义域名:
const client = new LogtoClient({
endpoint: 'https://auth.example.com', // 使用你的自定义域名
appId: 'your-app-id',
// ... 其他选项
});
同时请确认在 控制台 → 应用 中注册的重定向 URI 与你正在使用的域名一致。
注意: Logto 会自动为你的自定义域名申请和管理 SSL 证书,无需你自行配置证书。
使用自定义域名
配置完成后,你的自定义域名和默认 Logto 域名都可用于你的租户。但要激活自定义域名,还需进行一些配置。
本文假设你的自定义域名为 auth.example.com。
为应用更新 SDK 端点
修改 Logto SDK 的初始化代码,将端点的域名更改为你的自定义域名。
const client = new LogtoClient({
...,// 其他选项
endpoint: 'https://auth.example.com',
});
在 控制台 > 应用 的应用详情页,滚动到 “端点与凭证” 区域。切换域名下拉框,查看并复制相应端点以更新你的应用设置。
为其他应用修改认证 (Authentication) 端点
如果你的应用没有使用 Logto SDK,则需要手动更新其认证 (Authentication) 端点。
你可以在如下 well-known URL 找到认证 (Authentication) 端点:
https://auth.example.com/oidc/.well-known/openid-configuration
更新社交连接器重定向 URI
社交连接器 使用 OIDC/OAuth 协议。当用户通过自定义域名登录时,重定向 URI 会自动使用该自定义域名。你需要在社交平台开发者控制台中更新重定向 URI。
步骤:
- 进入 控制台 > 连接器 > 社交连接器,选择你的连接器。
- 复制连接器详情中显示的重定向 URI。Logto 会列出你配置的所有自定义域名下可用的重定向 URI。
- 将该重定向 URI 添加到社交平台的开发者控制台(如 Google、GitHub、Facebook)。
如有多个自定义域名:
- 为每个自定义域名都添加对应的重定向 URI,确保无论用户访问哪个域名都能正常社交登录。
- 默认 Logto 域名(
*.logto.app)依然有效。仅当你希望支持默认域名登录时才需添加。 - 对于 GitHub 连接器,请使用 GitHub Apps,而不是在 GitHub 控制台配置的 OAuth apps,因为 GitHub Apps 支持多个重定向 URI,OAuth apps 仅支持单一重定向 URI。
更新基于 OIDC 的企业单点登录 (SSO) 连接器重定向 URI
基于 OIDC 的企业连接器 与社交连接器用法一致。
步骤:
- 进入 控制台 > 企业单点登录 (SSO),选择你的 OIDC 连接器。
- 复制连接器详情中的重定向 URI。Logto 会列出你配置的所有自定义域名下可用的重定向 URI。
- 在你的身份提供商 (IdP) 设置中更新重定向 URI。
如有多个自定义域名: 在 IdP 中添加所有对应的重定向 URI,确保企业单点登录 (SSO) 能在所有域名下正常工作。
更新基于 SAML 的企业单点登录 (SSO) 连接器 ACS URL
基于 SAML 的企业连接器 使用 Assertion Consumer Service (ACS) URL,而不是重定向 URI。
步骤:
- 进入 控制台 > 企业单点登录 (SSO),选择你的 SAML 连接器。
- 在 “在 IdP 中配置” 区域,通过域名下拉框切换你的自定义域名。
- 复制你要支持的域名下的 ACS URL。
- 将这些 ACS URL 添加到你的 SAML 身份提供商配置中。
重要提示: 你选择的域名决定了用户在 SSO 认证 (Authentication) 后被重定向到哪里。请根据你的应用期望接收 SAML 响应的域名进行配置。
MFA 的 Passkey
多因素认证 (MFA) 的 Passkey 绑定在注册时所用的域名上。用户必须通过同一域名登录才能使用其 Passkey。
当前限制:Logto 暂不支持跨域 Passkey 验证。如果用户在 auth.us.example.com 注册了 Passkey,则必须通过 auth.us.example.com 登录才能使用该 Passkey 进行认证 (Authentication)。在一个域名注册的 Passkey 无法用于其他自定义域名的登录。