在 Azure 门户中为客户端身份验证设置 Microsoft Entra ID

对于在 Azure 上运行的群集,可以使用 Microsoft Entra ID 来帮助保护对管理终结点的访问。 本文介绍了如何在 Azure 门户中设置 Microsoft Entra ID 来对 Azure Service Fabric 群集的客户端进行身份验证。

在本文中,“应用程序”一词一般是指 Microsoft Entra 应用程序,而非 Service Fabric 应用程序。 通过 Microsoft Entra ID,组织(称为租户)可管理用户对应用程序的访问。

Service Fabric 群集提供其管理功能的各种入口点,包括基于 Web 的 Service Fabric ExplorerVisual Studio。 因此,需要创建两个 Microsoft Entra 应用程序来控制对群集的访问:一个 Web 应用程序和一个本机应用程序。 创建应用程序后,将用户分配到只读和管理员角色。

备注

先决条件

本文假设已创建了一个租户。 如果未创建,请先阅读快速入门:设置租户

注册 Microsoft Entra ID 群集应用

在 Azure 门户中打开 Microsoft Entra ID“应用注册”窗格,选择“+ 新建注册”。

屏幕截图显示群集应用注册窗格,其中包含用于新建注册的按钮。

在“注册应用程序”窗格中,输入以下信息,然后选择“注册”:

  • 名称:输入描述性名称。 最好在名称中定义注册类型,例如:{{群集名称}}_Cluster。

  • 支持的帐户类型:选择“仅限此组织目录中的帐户”。

  • 重定向 URI:选择“Web”,并输入客户端将重定向到的 URL。 此示例使用 Service Fabric Explorer URL:https://{{cluster name}}.{{location}}.cloudapp.chinacloudapi.cn:19080/Explorer/index.html

    完成注册后,可通过选择“身份验证”>“添加 URI”来添加更多重定向 URI。

备注

如果计划使用缩短的 URL(例如 https://{{cluster name}}.{{location}}.cloudapp.chinacloudapi.cn:19080/Explorer)访问 Service Fabric Explorer,请添加更多重定向 URI。 需要提供完全匹配的 URL 以避免 AADSTS50011 错误:“请求中指定的重定向 URI 与为应用程序配置的重定向 URI 不匹配。 确保请求中发送的重定向 URI 与 Azure 门户中添加到应用程序的重定向 URI 匹配。”详细了解如何排查此错误

门户中群集应用注册的屏幕截图。

品牌打造和属性

注册群集应用后,选择“品牌打造和属性”并填充任何其他信息。 对于“主页 URL”,请输入 Service Fabric Explorer URL。

门户中群集品牌信息的屏幕截图。

身份验证

选择“身份验证”。 在“隐式授权和混合流”下,选中“ID 令牌(用于隐式流和混合流)”复选框。

门户中群集身份验证信息的屏幕截图。

公开 API

依次选择“公开 API”和“设置”链接,输入“应用程序 ID URI”的值。 输入已验证域的 URI 或使用 API 方案格式 api://{{tenant Id}}/{{cluster name}} 的 URI。 例如:api://0e3d2646-78b3-4711-b8be-74a381d9890c/mysftestcluster

有关详细信息,请参阅单租户应用程序中的 AppId URI 需要使用默认方案或已验证的域

屏幕截图显示在门户中输入应用程序 ID URI。

选择“+ 添加范围”,然后输入以下信息:

  • 范围名称:输入 user_impersonation。
  • 谁能同意?:选择“管理员和用户”。
  • 管理员同意显示名称:输入描述性名称。 最好定义群集名称和身份验证类型,例如:访问 mysftestcluster_Cluster。
  • 管理员同意说明:输入说明,例如“允许应用程序代表登录用户访问 mysftestcluster_Cluster”。
  • 用户同意显示名称:输入描述性名称。 最好定义群集名称和身份验证类型,例如:访问 mysftestcluster_Cluster。
  • 用户同意说明:输入说明,例如“允许应用程序代表你访问mysftestcluster_Cluster”。
  • 状态:选择“启用”。

用于向群集添加范围的选项的屏幕截图。

应用角色

选择“应用角色”>“+ 创建应用角色”,添加管理员和只读用户角色。

屏幕截图显示门户中用于分配应用角色的窗格。

输入管理员用户的以下信息,然后选择“应用”:

  • 显示名称:输入 Admin。
  • 允许的成员类型:选择“用户/组”。
  • 值:输入 Admin。
  • 描述:输入“管理员可以管理角色并执行所有任务操作”。

屏幕截图显示门户中用于创建管理员用户角色的选项。

输入只读用户的以下信息,然后选择“应用”:

  • 显示名称:输入 ReadOnly。
  • 允许的成员类型:选择“用户/组”。
  • :输入 User
  • 描述:输入“ReadOnly 角色具有有限的查询访问权限”。

屏幕截图显示门户中用于创建只读用户角色的选项。

注册 Microsoft Entra 客户端应用

在 Azure 门户中打开 Microsoft Entra ID“应用注册”窗格,然后选择“+ 新建注册”。

屏幕截图显示客户端应用注册窗格,其中包含用于新建注册的按钮。

输入以下信息,然后选择“注册”:

  • 名称:输入描述性名称。 最好在名称中定义注册类型,例如:{{群集名称}}_Client。
  • 支持的帐户类型:选择“仅限此组织目录中的帐户”。
  • 重定向 URI:选择“公共客户端/本机”,然后输入 urn:ietf:wg:oauth:2.0:oob

门户中客户端应用注册的屏幕截图。

身份验证

注册客户端应用后,选择“身份验证”。 在“高级设置”下,为“允许公共客户端流”选择“是”,然后选择“保存”。

门户中客户端身份验证信息的屏幕截图。

API 权限

选择“API 权限”>“+ 添加权限”。

屏幕截图显示用于请求 API 权限的窗格。

依次选择“委托的权限”“user_impersonation”权限和“添加权限”。

屏幕截图显示门户中“委托的权限”的选项。

在 API 权限列表中,选择“为默认目录授予管理员同意”。

屏幕截图显示用于为默认目录授予管理员同意的按钮。

选择“是”确认要授予管理员同意。

屏幕截图显示确认授予管理员同意的对话框。

属性

仅对于客户端应用注册,请转到“企业应用程序”窗格。

选择“属性”,然后为“需要分配?”选择“否”。

屏幕截图显示门户中客户端应用注册的属性。

仅针对群集应用注册,请转到“企业应用程序”窗格。

选择“属性”,然后为“需要分配?”选择“是”。

屏幕截图显示门户中群集应用注册的属性。

向用户分配应用程序角色

为 Service Fabric 创建 Microsoft Entra 应用注册后,可以修改 Microsoft Entra 用户,以使用应用注册通过 Microsoft Entra ID 连接到群集。

对于只读和管理员角色,使用 Microsoft Entra ID 群集应用注册。 不使用 Microsoft Entra 客户端应用注册进行角色分配。 而是通过“企业应用程序”窗格分配角色。

删除筛选器

若要查看在应用注册过程中创建的企业应用程序,必须从门户的“所有应用程序”窗格中删除“应用程序类型”和“应用程序 ID 开头为”的默认筛选器。 还可以通过从应用注册“API 权限”窗格打开“企业应用程序”链接来查看企业应用程序。

以下屏幕截图显示了要移除的默认筛选器。

屏幕截图显示门户中使用了默认筛选器的企业应用。

以下屏幕截图显示已移除筛选器的企业应用。

屏幕截图显示已移除筛选器的企业应用。

向 Microsoft Entra 用户添加角色分配

若要将应用程序添加到现有 Microsoft Entra 用户,请转到“企业应用程序”并查找创建的 Microsoft Entra ID 群集应用注册。

选择“用户和组”>“+ 添加用户/组”,添加现有的 Microsoft Entra 用户角色分配。

屏幕截图显示门户中用于添加现有 Microsoft Entra 用户角色分配的选项。

在“用户”下,选择“未选择”链接。

屏幕截图显示用于添加分配的窗格,其中未选择任何用户用户。

对于需要只读(查看)访问权限的用户,请查找这些用户,然后在“选择角色”下,选择“未选择”链接。 然后在“选择角色”窗格中,添加 ReadOnly 角色。

为用户选择只读角色的屏幕截图。

对于需要完全读/写访问权限的用户,请查找这些用户,然后在“选择角色”下,选择“未选择”链接。 然后在“选择角色”窗格中,添加 Admin 角色。

为用户选择管理员角色的屏幕截图。

“用户和组”窗格的屏幕截图,其中分配了角色。

使用 Microsoft Entra 注册配置群集

在 Azure 门户中,打开“Service Fabric 群集”窗格。

Service Fabric 托管群集配置

打开托管群集资源,然后选择“安全性”。 选中“启用 Microsoft Entra ID”复选框。

输入以下信息,然后选择“应用”:

  • 租户 ID:输入租户 ID。
  • 群集应用程序:输入 Microsoft Entra ID 群集应用注册的 ID。 这也称为 Web 应用程序。
  • 客户端应用程序:输入 Microsoft Entra 客户端应用注册的 ID。 这也称为本机应用程序。

屏幕截图显示用于为托管群集启用 Microsoft Entra ID 的选项。

Service Fabric 群集配置

打开群集资源,然后选择“安全性”。 然后选择“+ 添加”。

屏幕截图显示“安全性”窗格和“添加”按钮。

输入以下信息,然后选择“添加”:

  • 身份验证类型:选择“Microsoft Entra ID”。
  • TenantID:输入租户 ID。
  • 群集应用程序:输入 Microsoft Entra ID 群集应用注册的 ID。 这也称为 Web 应用程序。
  • 客户端应用程序:输入 Microsoft Entra 客户端应用注册的 ID。 这也称为本机应用程序。

屏幕截图显示“添加”窗格中的选项。

使用 Microsoft Entra ID 连接到群集

若要详细了解以下示例中的代码,请参阅 Connect-ServiceFabricCluster cmdlet

使用 Microsoft Entra 身份验证通过 PowerShell 连接到 Service Fabric 群集

若要使用 PowerShell 连接到 Service Fabric 群集,必须从安装了 Service Fabric SDK 的计算机运行命令。 SDK 包含群集中当前存在的节点。

若要连接 Service Fabric 群集,请使用以下 PowerShell 命令示例:

Import-Module servicefabric

$clusterEndpoint = 'sftestcluster.chinaeast.cloudapp.chinacloudapi.cn'
$serverCertThumbprint = ''
Connect-ServiceFabricCluster -ConnectionEndpoint $clusterEndpoint `
  -AzureActiveDirectory `
  -ServerCertThumbprint $serverCertThumbprint `
  -Verbose

使用 Microsoft Entra 身份验证通过 PowerShell 连接到 Service Fabric 托管群集

若要连接到托管群集,还需要 Az.Resources PowerShell 模块来查询需要枚举和使用的动态群集服务器证书指纹。

若要连接 Service Fabric 群集,请使用以下 PowerShell 命令示例:

Import-Module servicefabric
Import-Module Az.Resources

$clusterEndpoint = 'mysftestcluster.chinaeast.cloudapp.chinacloudapi.cn'
$clusterName = 'mysftestcluster'

$clusterResource = Get-AzResource -Name $clusterName -ResourceType 'Microsoft.ServiceFabric/managedclusters'
$serverCertThumbprint = $clusterResource.Properties.clusterCertificateThumbprints

Connect-ServiceFabricCluster -ConnectionEndpoint $clusterEndpoint `
  -AzureActiveDirectory `
  -ServerCertThumbprint $serverCertThumbprint `
  -Verbose

Microsoft Entra ID 设置故障排除

Microsoft Entra ID 的设置和使用可能有一定难度。 可以参考下面的一些指导来调试问题。

Service Fabric Explorer 提示选择证书

问题

成功登录到 Service Fabric Explorer 中的 Microsoft Entra ID 后,浏览器返回到主页,但会出现提示用户选择证书的消息。

屏幕截图显示用于选择证书的 Service Fabric Explorer 对话框。

原因

未在 Microsoft Entra ID 群集应用程序中为用户分配角色,因此 Microsoft Entra 身份验证在 Service Fabric 群集上失败。 Service Fabric Explorer 会故障回复到证书身份验证。

解决方案

遵循有关设置 Microsoft Entra ID 的说明操作,并为用户分配角色。 此外,建议打开“访问应用需要进行用户分配”,如 SetupApplications.ps1 所示。

使用 PowerShell 进行连接失败并出现错误:“指定的凭据无效”

问题

使用 PowerShell 以 AzureActiveDirectory 安全模式连接到群集时,成功登录到 Microsoft Entra ID 后,连接失败并显示错误:“指定的凭据无效。”

解决方案

遵循有关设置 Microsoft Entra ID 的说明操作,并为用户分配角色。 此外,建议打开“访问应用需要进行用户分配”,如 SetupApplications.ps1 所示。

登录时,Service Fabric Explorer 返回错误:“AADSTS50011”

问题

用户尝试登录到 Service Fabric Explorer 中的 Microsoft Entra ID 时,页面返回错误:“AADSTS50011:回复地址 <url> 与针对应用程序 <guid> 配置的回复地址不匹配”。

屏幕截图显示 Service Fabric Explorer 登录错误,指出回复地址不匹配。

原因

代表 Service Fabric Explorer 的群集 (Web) 应用程序尝试针对 Microsoft Entra ID 进行身份验证。 在执行请求的过程中,它提供了重定向返回 URL。 但是,该 URL 并未列在 Microsoft Entra 应用程序的“重定向 URI”列表中。

解决方案

在群集的 Microsoft Entra 应用注册页上,选择“身份验证”。 在“重定向 URI”部分中,将 Service Fabric Explorer URL 添加到列表中。 保存所做更改。

屏幕截图显示设置 Web 应用程序的回复 URL。

登录时,通过 PowerShell 使用 Microsoft Entra 身份验证连接到群集会生成错误:“AADSTS50011”

问题

尝试通过 PowerShell 使用 Microsoft Entra ID 连接到 Service Fabric 群集时,登录页会返回错误:“AADSTS50011: 在请求中指定的回复 URL 与为应用程序 <guid> 配置的回复 URL 不匹配。”

原因

PowerShell 尝试针对 Microsoft Entra ID 进行身份验证,该 ID 提供 Microsoft Entra 应用程序的“回复 URI”列表中未列出的重定向 URL。

解决方案

在群集的 Microsoft Entra 应用注册页上,选择“身份验证”。 在“重定向 URI”部分中,将 URL 设置为 urn:ietf:wg:oauth:2.0:oob。 此 URL 是命令行身份验证的特殊重定向。

常见问题解答

是否可以在多个群集中重复使用同一个 Microsoft Entra 租户?

是的。 请记得将 Service Fabric Explorer 的 URL 添加到群集 (Web) 应用程序。 否则 Service Fabric Explorer 无法正常工作。

启用 Microsoft Entra ID 时为何仍需要服务器证书?

FabricClientFabricGateway 执行相互身份验证。 在 Microsoft Entra 身份验证期间,Microsoft Entra 集成向服务器提供客户端标识,客户端使用服务器证书来验证服务器的标识。 有关 Service Fabric 证书的详细信息,请参阅 X.509 证书和 Service Fabric

后续步骤

在为用户设置 Microsoft Entra 应用程序和设置角色后,配置和部署群集