gpt4 book ai didi

azure : Permission for Service Principal to get list of Service Principals

转载 作者:行者123 更新时间:2023-12-04 17:25:12 29 4
gpt4 key购买 nike

我正在使用 Fluent Azure SDK for .NET 尝试获取租户中所有服务主体的列表。

var authenticatedContext = Azure.Authenticate(
await SdkContext.AzureCredentialsFactory.FromServicePrincipal(aadClientId, aadClientSecret, tenantId, "AzureGlobalCloud")
);

var sps = authenticatedContext.ServicePrincipals.ListAsync().GetAwaiter().GetResults();

具有 AAD 客户端 ID 的服务主体具有 Directory.Read.All API 权限。(只是为了确保我没有遗漏任何内容:我在 Azure 门户的 ServicePrincipal -> 权限部分中看到了此权限)

但是仍然抛出以下错误:Microsoft.Azure.Management.Graph.RBAC.Fluent.Models.GraphErrorException:操作返回无效的状态代码“禁止”

但是,获取 ADGroup 和订阅列表的标注可以工作

var subs = authenticatedContext.Subscriptions.ListAsync().GetAwaiter().GetResults();

var sgs = authenticatedContext.Subscriptions.ActiveDirectoryGroups().GetByIdAsync(someId).GetAwaiter().GetResults();

我不知道缺少什么权限。

最佳答案

我在我这边测试了代码,并使用fiddler来捕获请求。 sdk 似乎请求 Azure AD graph api 而不是 Microsoft graph api 来列出服务主体。因此,您需要添加AAD graph的权限Directory.Read.All,而不是Microsoft graph。请引用以下步骤:

enter image description here

enter image description here

添加权限后,不要忘记授予管理员同意。然后您可以成功运行代码来获取服务主体。

顺便说一句,AAD权限Directory.Read.All存在一个错误。如果我们在注册的应用中添加AAD权限Directory.Read.All,那么即使我们从页面中删除该权限也无法删除。因此,即使您从页面的“API 权限”选项卡中删除了 Directory.Read.All,您仍然可以成功运行代码。

关于 azure : Permission for Service Principal to get list of Service Principals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63799115/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com