对于在 Azure 上运行的群集,可以使用 Microsoft Entra ID 来帮助保护对管理终结点的访问。 本文介绍了如何在 Azure 门户中设置 Microsoft Entra ID 来对 Azure Service Fabric 群集的客户端进行身份验证。
在本文中,“应用程序”一词一般是指 Microsoft Entra 应用程序,而非 Service Fabric 应用程序。 通过 Microsoft Entra ID,组织(称为租户)可管理用户对应用程序的访问。
Service Fabric 群集提供其管理功能的各种入口点,包括基于 Web 的 Service Fabric Explorer 和 Visual Studio。 因此,需要创建两个 Microsoft Entra 应用程序来控制对群集的访问:一个 Web 应用程序和一个本机应用程序。 创建应用程序后,将用户分配到只读和管理员角色。
备注
- 在 Linux 上,请在创建群集之前完成以下步骤。 在 Windows 上,也可选择为现有群集配置 Microsoft Entra 身份验证。
- 已知问题是在 Azure 门户中无法查看已启用 Linux Microsoft Entra ID 的群集上的应用程序和节点。
- Microsoft Entra ID 现在要求验证应用程序(应用注册)发布者域或使用默认方案。 有关详细信息,请参阅配置应用程序的发布者域和单租户应用程序中的 AppId URI 需要使用默认方案或已验证的域。
本文假设已创建了一个租户。 如果未创建,请先阅读快速入门:设置租户。
在 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”和“设置”链接,输入“应用程序 ID URI”的值。 输入已验证域的 URI 或使用 API 方案格式 api://{{tenant Id}}/{{cluster name}}
的 URI。 例如:api://0e3d2646-78b3-4711-b8be-74a381d9890c/mysftestcluster
。
有关详细信息,请参阅单租户应用程序中的 AppId URI 需要使用默认方案或已验证的域。
选择“+ 添加范围”,然后输入以下信息:
- 范围名称:输入 user_impersonation。
- 谁能同意?:选择“管理员和用户”。
- 管理员同意显示名称:输入描述性名称。 最好定义群集名称和身份验证类型,例如:访问 mysftestcluster_Cluster。
- 管理员同意说明:输入说明,例如“允许应用程序代表登录用户访问 mysftestcluster_Cluster”。
- 用户同意显示名称:输入描述性名称。 最好定义群集名称和身份验证类型,例如:访问 mysftestcluster_Cluster。
- 用户同意说明:输入说明,例如“允许应用程序代表你访问mysftestcluster_Cluster”。
- 状态:选择“启用”。
选择“应用角色”>“+ 创建应用角色”,添加管理员和只读用户角色。
输入管理员用户的以下信息,然后选择“应用”:
- 显示名称:输入 Admin。
- 允许的成员类型:选择“用户/组”。
- 值:输入 Admin。
- 描述:输入“管理员可以管理角色并执行所有任务操作”。
输入只读用户的以下信息,然后选择“应用”:
- 显示名称:输入 ReadOnly。
- 允许的成员类型:选择“用户/组”。
- 值:输入 User。
- 描述:输入“ReadOnly 角色具有有限的查询访问权限”。
在 Azure 门户中打开 Microsoft Entra ID“应用注册”窗格,然后选择“+ 新建注册”。
输入以下信息,然后选择“注册”:
- 名称:输入描述性名称。 最好在名称中定义注册类型,例如:{{群集名称}}_Client。
- 支持的帐户类型:选择“仅限此组织目录中的帐户”。
- 重定向 URI:选择“公共客户端/本机”,然后输入
urn:ietf:wg:oauth:2.0:oob
。
注册客户端应用后,选择“身份验证”。 在“高级设置”下,为“允许公共客户端流”选择“是”,然后选择“保存”。
选择“API 权限”>“+ 添加权限”。
依次选择“委托的权限”“user_impersonation”权限和“添加权限”。
在 API 权限列表中,选择“为默认目录授予管理员同意”。
选择“是”确认要授予管理员同意。
仅对于客户端应用注册,请转到“企业应用程序”窗格。
选择“属性”,然后为“需要分配?”选择“否”。
仅针对群集应用注册,请转到“企业应用程序”窗格。
选择“属性”,然后为“需要分配?”选择“是”。
为 Service Fabric 创建 Microsoft Entra 应用注册后,可以修改 Microsoft Entra 用户,以使用应用注册通过 Microsoft Entra ID 连接到群集。
对于只读和管理员角色,使用 Microsoft Entra ID 群集应用注册。 不使用 Microsoft Entra 客户端应用注册进行角色分配。 而是通过“企业应用程序”窗格分配角色。
若要查看在应用注册过程中创建的企业应用程序,必须从门户的“所有应用程序”窗格中删除“应用程序类型”和“应用程序 ID 开头为”的默认筛选器。 还可以通过从应用注册“API 权限”窗格打开“企业应用程序”链接来查看企业应用程序。
以下屏幕截图显示了要移除的默认筛选器。
以下屏幕截图显示已移除筛选器的企业应用。
若要将应用程序添加到现有 Microsoft Entra 用户,请转到“企业应用程序”并查找创建的 Microsoft Entra ID 群集应用注册。
选择“用户和组”>“+ 添加用户/组”,添加现有的 Microsoft Entra 用户角色分配。
在“用户”下,选择“未选择”链接。
对于需要只读(查看)访问权限的用户,请查找这些用户,然后在“选择角色”下,选择“未选择”链接。 然后在“选择角色”窗格中,添加 ReadOnly 角色。
对于需要完全读/写访问权限的用户,请查找这些用户,然后在“选择角色”下,选择“未选择”链接。 然后在“选择角色”窗格中,添加 Admin 角色。
在 Azure 门户中,打开“Service Fabric 群集”窗格。
打开托管群集资源,然后选择“安全性”。 选中“启用 Microsoft Entra ID”复选框。
输入以下信息,然后选择“应用”:
- 租户 ID:输入租户 ID。
- 群集应用程序:输入 Microsoft Entra ID 群集应用注册的 ID。 这也称为 Web 应用程序。
- 客户端应用程序:输入 Microsoft Entra 客户端应用注册的 ID。 这也称为本机应用程序。
打开群集资源,然后选择“安全性”。 然后选择“+ 添加”。
输入以下信息,然后选择“添加”:
- 身份验证类型:选择“Microsoft Entra ID”。
- TenantID:输入租户 ID。
- 群集应用程序:输入 Microsoft Entra ID 群集应用注册的 ID。 这也称为 Web 应用程序。
- 客户端应用程序:输入 Microsoft Entra 客户端应用注册的 ID。 这也称为本机应用程序。
若要详细了解以下示例中的代码,请参阅 Connect-ServiceFabricCluster cmdlet。
若要使用 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
若要连接到托管群集,还需要 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 的设置和使用可能有一定难度。 可以参考下面的一些指导来调试问题。
成功登录到 Service Fabric Explorer 中的 Microsoft Entra ID 后,浏览器返回到主页,但会出现提示用户选择证书的消息。
未在 Microsoft Entra ID 群集应用程序中为用户分配角色,因此 Microsoft Entra 身份验证在 Service Fabric 群集上失败。 Service Fabric Explorer 会故障回复到证书身份验证。
遵循有关设置 Microsoft Entra ID 的说明操作,并为用户分配角色。 此外,建议打开“访问应用需要进行用户分配”,如 SetupApplications.ps1
所示。
使用 PowerShell 以 AzureActiveDirectory
安全模式连接到群集时,成功登录到 Microsoft Entra ID 后,连接失败并显示错误:“指定的凭据无效。”
遵循有关设置 Microsoft Entra ID 的说明操作,并为用户分配角色。 此外,建议打开“访问应用需要进行用户分配”,如 SetupApplications.ps1
所示。
用户尝试登录到 Service Fabric Explorer 中的 Microsoft Entra ID 时,页面返回错误:“AADSTS50011:回复地址 <url> 与针对应用程序 <guid> 配置的回复地址不匹配”。
代表 Service Fabric Explorer 的群集 (Web) 应用程序尝试针对 Microsoft Entra ID 进行身份验证。 在执行请求的过程中,它提供了重定向返回 URL。 但是,该 URL 并未列在 Microsoft Entra 应用程序的“重定向 URI”列表中。
在群集的 Microsoft Entra 应用注册页上,选择“身份验证”。 在“重定向 URI”部分中,将 Service Fabric Explorer URL 添加到列表中。 保存所做更改。
尝试通过 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 是命令行身份验证的特殊重定向。
是的。 请记得将 Service Fabric Explorer 的 URL 添加到群集 (Web) 应用程序。 否则 Service Fabric Explorer 无法正常工作。
FabricClient
和 FabricGateway
执行相互身份验证。 在 Microsoft Entra 身份验证期间,Microsoft Entra 集成向服务器提供客户端标识,客户端使用服务器证书来验证服务器的标识。 有关 Service Fabric 证书的详细信息,请参阅 X.509 证书和 Service Fabric。
在为用户设置 Microsoft Entra 应用程序和设置角色后,配置和部署群集。