我正在使用一个具有应用程序类型的权限Application.Read.All和Directory.Read.All的服务原则来验证Azure,并使用以下代码来获取租户中的应用程序列表。
from azure.common.credentials import ServicePrincipalCredentials
from azure.graphrbac import GraphRbacManagementClient
from config import app
credentials = ServicePrincipalCredentials(
client_id = app["CLIENT"],
secret = app["KEY"],
tenant = app["TENANT_ID"],
resource="https://graph.windows.net"
)
graphrbac_client = GraphRbacManagementClient(credentials, app["TENANT"])
for app in graphrbac_client.applications.list():
print("\nApp:")
print(app)
print("******\n")任何帮助都是非常感谢的。
发布于 2020-05-30 03:30:48
Application.Read.All和Directory.Read.All这两个权限要求您的目录获得全局管理员的同意。我建议要求您的全球管理员向您的服务负责人提供同意。
发布于 2020-06-01 11:10:29
根据您的描述,我认为您添加了Microsoft Graph的应用程序权限Application.Read.All和Directory.Read.All,因为您需要的是Azure Active Directory Graph,它没有Application.Read.All权限。

在您的代码中,它使用resource="https://graph.windows.net",这意味着您的代码调用Azure Active Directory Graph,而不是Microsoft Graph来解决这个问题,只需添加如下所示的Azure Active Directory Graph的应用程序权限Directory.Read.All即可。


注意:添加权限后,不要忘了点击Grant admin consent for xxx按钮,否则您的服务主体将得不到权限。

可能会有一些延迟,半小时后,测试代码,它可以正常工作。

https://stackoverflow.com/questions/62092162
复制相似问题