如何使用Azure SDK for .Net获取服务主体属性及UWP C#获取应用显示名
问题1:如何使用Azure SDK for .NET获取服务主体属性
使用Azure Resource Manager (ARM) SDK的最新包替代已弃用的Fluent系列包,步骤如下:
安装NuGet包
安装以下两个核心包:Azure.Identity:提供多种认证方式Azure.ResourceManager.Graph.Rbac:用于管理Azure AD服务主体
编写代码获取属性
通过RbacManagementClient结合认证凭据,可直接查询服务主体的各类属性:
using Azure.Identity; using Azure.ResourceManager.Graph.Rbac; using Azure.ResourceManager.Graph.Rbac.Models; // 替换为你的租户ID和目标服务主体ID var tenantId = "your-tenant-id"; var targetSpId = "target-service-principal-id"; // 使用DefaultAzureCredential(支持本地开发、Azure托管环境等多种认证场景) var credential = new DefaultAzureCredential(); var rbacClient = new RbacManagementClient(tenantId, credential); // 获取指定ID的服务主体 var servicePrincipal = await rbacClient.ServicePrincipals.GetAsync(targetSpId); // 访问所需属性 Console.WriteLine($"显示名: {servicePrincipal.DisplayName}"); Console.WriteLine($"App ID: {servicePrincipal.AppId}"); Console.WriteLine($"主体类型: {servicePrincipal.ServicePrincipalType}");
问题2:UWP C#项目中获取服务主体的应用显示名(替代HTTP请求的方法)
在UWP环境中,依然可以使用最新的Azure SDK包实现需求,无需直接发送HTTP请求,步骤如下:
安装NuGet包
同样安装Azure.Identity和Azure.ResourceManager.Graph.Rbac,注意选择兼容UWP的最新稳定版本。适配UWP的认证方式
UWP更适合使用InteractiveBrowserCredential进行交互式认证,需提前在Azure AD应用注册中配置重定向URI(格式为msal{你的UWP应用客户端ID}://auth)。编写UWP代码示例
using Azure.Identity; using Azure.ResourceManager.Graph.Rbac; using Azure.ResourceManager.Graph.Rbac.Models; // 替换为你的租户ID、UWP应用客户端ID和目标服务主体ID var tenantId = "your-tenant-id"; var uwpClientId = "your-uwp-app-client-id"; var targetSpId = "target-service-principal-id"; // 初始化交互式认证凭据 var credential = new InteractiveBrowserCredential(new InteractiveBrowserCredentialOptions { TenantId = tenantId, ClientId = uwpClientId, RedirectUri = new Uri($"msal{uwpClientId}://auth") }); var rbacClient = new RbacManagementClient(tenantId, credential); // 获取服务主体并提取显示名和App ID var servicePrincipal = await rbacClient.ServicePrincipals.GetAsync(targetSpId); string appDisplayName = servicePrincipal.DisplayName; string appId = servicePrincipal.AppId;
- 权限配置
确保你的UWP应用在Azure AD中被授予Application.Read.All或Directory.Read.All的应用权限(遵循最小权限原则),并完成管理员同意。
内容的提问来源于stack exchange,提问作者Stanislav
相关产品推荐
相关产品推荐

