为外部租户中的应用启用自定义 URL 域(预览版)

适用于:带灰色 X 符号的白色圆圈。 员工租户 带白色勾号的绿色圆圈。 外部租户(了解详细信息

本文介绍了如何为外部租户中的 Microsoft Entra 外部 ID 应用程序启用自定义 URL 域。 自定义 URL 域让你可以使用自定义 URL 域(而不是 Microsoft 的默认域名)对应用程序的登录终结点进行品牌打造。

重要

此功能目前以预览版提供。 有关适用于 beta 版本、预览版或尚未正式发布版本的 Azure 功能和服务的法律条款,请参阅联机服务的通用许可条款

先决条件

步骤 1:为租户添加自定义域名

创建外部租户时,它附带初始域名 <domainname.onmicrosoft.com>。 无法更改或删除初始域名,但可添加你自己的自定义域名。 对于这些步骤,请务必在 Microsoft Entra 管理中心登录到你的外部租户配置。

  1. 至少以域名管理员身份登录到 Microsoft Entra 管理中心

  2. 选择你的外部租户:选择顶部菜单中的设置图标,然后切换到外部租户。

  3. 导航到“标识”>“设置”>“域名”>“自定义域名”。

  4. 向 Microsoft Entra ID 添加自定义域名

  5. 将 DNS 信息添加到域注册机构。 将自定义域名添加到你的租户后,为你的域创建一个 DNS TXTMX 记录。 为域创建此 DNS 记录可以验证域名的所有权。

    以下是 login.contoso.com 和 account.contoso.com 的 TXT 记录示例

    名称(主机名) 类型 数据
    login TXT MS=ms12345678
    account TXT MS=ms87654321

    TXT 记录必须与域的子域或主机名相关联(例如,contoso.com 域的 login 部分)。 如果主机名为空或 @,则 Microsoft Entra ID 无法验证你添加的自定义域名。

    提示

    可使用任何公开提供的 DNS 服务(例如 GoDaddy)来管理你的自定义域名。 如果没有 DNS 服务器,可使用 Azure DNS 区域应用服务域

  6. 验证自定义域名。 验证你计划使用的每个子域或主机名。 例如,要能够通过 login.contoso.com 和 account.contoso.com 登录,需要验证这两个子域,而不只是顶级域 contoso.com。

    重要

    验证域后,删除创建的 DNS TXT 记录。

步骤 2:将自定义域名与自定义 URL 域相关联

添加并验证外部租户中的自定义域名后,将自定义域名与自定义 URL 域相关联。

  1. 登录 Microsoft Entra 管理中心

  2. 选择你的外部租户:选择顶部菜单中的设置图标,然后切换到外部租户。

  3. 导航到“标识”>“设置”>“域名”>“自定义 URL 域(预览版)”。

  4. 选择“添加自定义 URL 域”。

  5. 在“添加自定义 URL 域”窗格中,选择你在步骤 1 中输入的自定义域名。

    显示“添加自定义 URL 域”窗格的屏幕截图。

  6. 选择 添加

步骤 3:创建新的 Azure Front Door 实例

按照以下步骤创建 Azure Front Door:

  1. 登录 Azure 门户

  2. 选择包含你的 Azure Front Door 订阅的租户:选择顶部菜单中的设置图标,然后切换到包含你的 Azure Front Door 订阅的租户。

  3. 按照创建 Front Door 配置文件 - 快速创建中的步骤使用以下设置为你的租户创建 Front Door。 将“缓存”和“WAF 策略”设置留空。

    密钥
    订阅 选择 Azure 订阅。
    资源组 选择现有的资源组,或创建一个新的组。
    名称 为配置文件命名,例如 ciamazurefrontdoor
    选择“标准”或“高级”层。 标准层在内容传送方面经过优化。 高级层构建于标准层的基础之上,更注重安全性。 请参阅层级比较
    终结点名称 为终结点输入全局唯一的名称,例如 ciamazurefrontdoor。 “终结点主机名”将自动生成。
    源服务器类型 选择 Custom
    源主机名 输入 <tenant-name>.ciamlogin.com。 将 <tenant-name> 替换为你的租户的名称,例如 contoso.ciamlogin.com
  4. 创建完 Azure Front Door 资源后,选择“概述”,然后复制“终结点主机名”供后续步骤使用。 它类似于 ciamazurefrontdoor-ab123e.z01.azurefd.net

  5. 确保源的“主机名”和“源主机头”具有相同的值:

    1. 在“设置”下,选择“源组”。
    2. 从列表中选择源组,例如 default-origin-group。
    3. 在右侧窗格中,选择“源主机名”,例如 contoso.ciamlogin.com
    4. 在“更新源”窗格中,更新“主机名”和“源主机头”,使其具有相同的值。

    显示主机名和源主机头字段的屏幕截图。

步骤 4:在 Azure Front Door 上设置自定义 URL 域

在此步骤中,将你在步骤 1 中注册的自定义 URL 域添加到 Azure Front Door。

4.1. 创建 CNAME DNS 记录

若要添加自定义 URL 域,请在域提供商的配合下创建规范名称 (CNAME) 记录。 CNAME 记录是一种 DNS 记录,用于将源域名映射到目标域名(别名)。 对于 Azure Front Door,源域名是你的自定义 URL 域名,目标域名是你在步骤 2 中配置的 Front Door 默认主机名,例如 ciamazurefrontdoor-ab123e.z01.azurefd.net

在 Front Door 验证了你创建的 CNAME 记录后,发往源自定义 URL 域(例如 login.contoso.com)的流量将路由到指定的目标 Front Door 默认前端主机(例如 contoso-frontend.azurefd.net)。 有关详细信息,请参阅将自定义域添加到 Front Door

若要创建自定义域的 CNAME 记录,请执行以下操作:

  1. 登录到你的自定义域的域提供商的网站。

  2. 查阅提供商的文档,或者在网站中搜索标有“域名”、“DNS”或“名称服务器管理”的区域,找到用于管理 DNS 记录的页面。

  3. 为你的自定义 URL 域创建一个 CNAME 记录条目并完成各个字段,如下表所示。

    类型 目标
    <login.contoso.com> CNAME contoso-frontend.azurefd.net
    • 源:输入你的自定义 URL 域(例如 login.contoso.com)。

    • 键入:输入 CNAME

    • 目标:输入你在步骤 2 中创建的默认 Front Door 前端主机。 它必须采用以下格式:<主机名>.azurefd.net,例如,contoso-frontend.azurefd.net

  4. 保存所做更改。

4.2。 将自定义 URL 域与你的 Front Door 相关联

  1. 在 Azure 门户主页中搜索 ciamazurefrontdoor Azure Front Door 资源,并将其选中以将其打开。

  2. 在左侧菜单中的“设置”下,选择“域”。

  3. 选择“添加域”。

  4. 对于“DNS 管理”,请选择“所有其他 DNS 服务”。

  5. 对于“自定义域”,请输入你的自定义域,例如 login.contoso.com

  6. 将其他值保留默认值,然后选择“添加”。 你的自定义域随即会添加到列表中。

  7. 在刚刚添加的域的“验证状态”下,选择“等待中”。 此时会打开一个包含 TXT 记录信息的窗格。

    1. 登录到你的自定义域的域提供商的网站。

    2. 查阅提供商的文档,或者在网站中搜索标有“域名”、“DNS”或“名称服务器管理”的区域,找到用于管理 DNS 记录的页面。

    3. 创建新的 TXT DNS 记录并完成以下字段:

      • Name:只输入 _dnsauth.contoso.com 的子域部分,例如 _dnsauth
      • 类型:TXT
      • Value:例如,75abc123t48y2qrtsz2bvk......

      添加 TXT DNS 记录后,Front Door 资源中的“验证状态”最终将从“等待中”更改为“已批准”。 你可能需要刷新页面才能看到更改。

  8. 在 Azure 门户中。 在刚刚添加的域的“终结点关联”下,选择“未关联”。

  9. 对于“选择终结点”,请从下拉列表中选择主机名终结点。

  10. 对于“选择路由”列表,请选择“default-route”,然后选择“关联”。

4.3。 启用路由

default-route 将流量从客户端路由到 Azure Front Door。 然后,Azure Front Door 使用你的配置将流量发送到外部租户。 要启用 default-route,请按以下步骤操作。

  1. 选择“Front Door 管理器”。

  2. 要启用 default-route,请首先从 Front Door 管理器中的终结点列表中展开某个终结点。 然后选择“default-route”。

  3. 选中“启用路由”复选框

  4. 选择“更新”以保存更改。

测试自定义 URL 域

  1. 登录 Microsoft Entra 管理中心

  2. 选择你的外部租户:选择顶部菜单中的设置图标,然后切换到外部租户。

  3. 在“外部标识”下,选择“用户流”。

  4. 选择一个用户流,然后选择“运行用户流”。

  5. 对于“应用程序”,请选择前面已注册的名为 webapp1 的 Web 应用程序。 “回复 URL”应显示为 https://jwt.ms

  6. 复制“运行用户流终结点”下的 URL。

    显示“运行用户流”选项的屏幕截图。

  7. 若要使用自定义域模拟登录,请打开 Web 浏览器并使用复制的 URL。 将域 (<tenant-name>.ciamlogin.com) 替换为你的自定义域。

    例如,不是:

    https://contoso.ciamlogin.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_susi&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login
    

    而是使用:

    https://login.contoso.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_susi&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login
    
  8. 验证登录页是否已正确加载。 然后使用本地帐户登录。

配置应用程序

配置并测试自定义 URL 域后,更新你的应用程序,使用你的自定义 URL 域而不是默认域作为主机名加载 URL。

自定义 URL 域集成适用于使用外部 ID 用户流对用户进行身份验证的身份验证终结点。 这些终结点采用以下格式:

  • https://<custom-url-domain>/<tenant-name>/v2.0/.well-known/openid-configuration

  • https://<custom-url-domain>/<tenant-name>/oauth2/v2.0/authorize

  • https://<custom-url-domain>/<tenant-name>/oauth2/v2.0/token

将:

  • 具有你的自定义 URL 域的 custom-url-domain
  • tenant-name 替换为租户名称或租户 ID

SAML 服务提供商元数据可能如以下示例所示:

https://custom-url-domain-name/tenant-name/Samlp/metadata

(可选)使用租户 ID

可以将 URL 中的外部租户名称替换为你的租户 ID GUID,以便移除对 URL 中 "onmicrosoft.com" 的所有引用。 可以在 Azure 门户或 Microsoft Entra 管理中心的“概述”页中找到租户 ID GUID。 例如,将 https://account.contosobank.co.uk/contosobank.onmicrosoft.com/ 更改为 https://account.contosobank.co.uk/<tenant-ID-GUID>/

如果选择使用租户 ID 而不是租户名称,请确保相应地更新标识提供者的 OAuth 重定向 URI。 使用租户 ID 而不是租户名称时,有效的 OAuth 重定向 URI 类似于以下示例:

https://login.contoso.com/00001111-aaaa-2222-bbbb-3333cccc4444/oauth2/authresp 

(可选)Azure Front Door 高级配置

可以使用 Azure Front Door 高级配置,例如 Azure Web 应用程序防火墙 (WAF)。 Azure WAF 可在出现常见攻击和漏洞时为 Web 应用程序提供集中保护。

使用自定义域时,请注意以下几点:

  • WAF 策略必须与 Azure Front Door 配置文件位于同一个层。 若要详细了解如何创建 WAF 策略以用于 Azure Front Door,请参阅配置 WAF 策略
  • WAF 托管规则功能不受官方支持,因为它可能会导致误报并阻止合法请求通过,因此请仅使用符合需求的 WAF 自定义规则。

故障排除

  • 找不到页面消息。 当你尝试使用自定义 URL 域登录时,会收到 HTTP 404 错误消息。 此问题可能与 DNS 配置或 Azure Front Door 后端配置相关。 请尝试以下步骤:

    • 请确保该自定义 URL 域在你的租户中已注册并成功通过验证。
    • 请确保该自定义域配置正确。 自定义域的 CNAME 记录必须指向 Azure Front Door 默认的前端主机(例如 contoso-frontend.azurefd.net)。
  • 我们的服务当前不可用消息。 当你尝试使用自定义 URL 域登录时,收到错误消息:我们的服务当前不可用。我们正在努力尽快恢复所有服务。请稍后回来查看。此问题可能与 Azure Front Door 路由配置有关。 检查 default-route 的状态。 如果它已被禁用,请启用该路由

  • 资源已被移除、已更改名称或暂时不可用。 当你尝试使用自定义 URL 域登录时,收到错误消息“你查找的资源已被移除、已更改名称或暂不可用”。 此问题可能与 Microsoft Entra 自定义域验证相关。 请确保该自定义域在你的租户中已注册并成功通过验证

  • 错误代码 399265:RoutingFromInvalidHost。 当租户从未验证的域发出请求时,将显示此错误代码。 请确保在你的 DNS 记录中添加 TXT 记录详细信息。 然后再次验证你的自定义域名

  • 错误代码 399280:InvalidCustomUrlDomain。 当租户从不是自定义 URL 域的已验证域发出请求时,将显示此错误代码。 请确保将自定义域名与自定义 URL 域相关联

后续步骤

请参阅我们所有的关于生成适用于外部 ID 的应用的示例指南和教程