在遵循官方文档操作时,要列出应用注册信息,需要用到“ApplicationsRequestBuilder”,但是文档中并没有提到如何导入这个类。我当前已有的导入语句包括:
import pyodbc
import adal
import struct
import json
import subprocess
import asyncio
from azure.identity import ClientSecretCredential, DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
from msgraph import GraphServiceClient
from msgraph.generated.models.password_credential import PasswordCredential
from msgraph.generated.applications.item.add_password.add_password_post_request_body import AddPasswordPostRequestBody
尽管我已经尝试了多种方式,但还是无法成功导入“ApplicationsRequestBuilder”。错误信息如下:
File "/azp/_work/1/s/Update_Expired_Service_Principals/sp_renewal.py", line 83, in get_sp_id
query_params = ApplicationsRequestBuilder.ApplicationsRequestBuilderGetQueryParameters(
NameError: name 'ApplicationsRequestBuilder' is not defined
我的代码段是这样的:
scopes = ['https://graph.microsoft.com/.default']
conn, credential, credentials = get_token()
graph_client = GraphServiceClient(credential, scopes=scopes)
async def get_sp_id():
# 尝试使用ApplicationsRequestBuilder构建查询参数
query_params = ApplicationsRequestBuilder.ApplicationsRequestBuilderGetQueryParameters(
filter="displayName eq 'test'",
count=True,
top=1,
)
# 创建请求配置对象
request_configuration = ApplicationsRequestBuilder.ApplicationsRequestBuilderGetRequestConfiguration(
query_parameters=query_params,
)
request_configuration.headers.add("ConsistencyLevel", "eventual")
# 使用配置的对象从Graph API获取应用列表
app_list = await graph_client.applications.get(request_configuration=request_configuration)
if app_list:
app = app_list[0]
# 获取特定应用的服务主体ID
sp_id = await graph_client.applications.by_application_id(app.id).get()
print(sp_id)
return sp_id
return None