我需要访问令牌即将过期(例如 7 天后到期)的所有应用程序列表。我需要什么权限才能使用 python 脚本获取它?
我已经在门户中给出了Directory.Read.ALL和Application.Read.All。 在代码中,我可以使用 az ad login --service-principal 命令登录 但是当它访问 az add app list --all 时,它显示“没有足够的权限来完成操作”
请注意,您需要在以服务主体身份登录时授予 Application 类型的 Application.Read.All 权限才能列出应用程序。
当我尝试在使用服务主体登录时通过授予 Dele脱 权限来列出应用程序时,出现了相同的错误,如下所示:
az login --service-principal -t <Tenant-ID> -u <Client-ID> -p <Client-secret> --allow-no-subscriptions
az ad app list --all
回复:
要解决该错误,请确保在应用程序注册中授予Application类型的 API 权限:
当我在授予 Application 权限后再次运行相同的命令时,我成功得到了如下响应:
az login --service-principal -t <Tenant-ID> -u <Client-ID> -p <Client-secret> --allow-no-subscriptions
az ad app list --all
回复:
要通过 Python 脚本获取这些应用程序列表,您可以使用以下示例代码:
import asyncio
from azure.identity import ClientSecretCredential
from msgraph import GraphServiceClient
tenant_id = "tenantId"
client_id = "appId"
client_secret = "secret"
credential = ClientSecretCredential(
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret
)
client = GraphServiceClient(credential)
async def main():
result = await client.applications.get()
applications = result.value
for app in applications:
print("App Name:", app.display_name)
print("App ID:", app.id)
print("--------------------------------------------------")
asyncio.run(main())
回复: