我想通过 Microsoft Graph API(客户端凭据流)从多个客户租户获取数据。 因此,我在我的租户中注册了一个多租户应用程序。 目前,我必须手动同意每个租户中的该应用程序(!)。我通过导航到“https://login.microsoftonline.com/{tenantId}/adminconsent?client_id={appId}”来执行此操作。然后使用我的合作伙伴委托的管理员帐户登录并给予同意。一切都是互动的。 当我这样做时,我的应用程序可以通过该租户中的 Microsoft Graph API 访问数据。 但这对于一群租户来说是非常乏味的。
有没有办法在代码(C#)中自动执行此操作?
作为具有委派管理权限的合作伙伴,您可以使用合作伙伴中心 API 为客户租户中的应用程序授予管理员同意:
API 有效负载主体的示例如下所述:
例如,要授予 Microsoft Graph 委托权限 User.Read 和 Application.Read.All,API 请求将如下所示:
POST https://api.partnercenter.microsoft.com/v1/customers/{customer_id}/applicationconsents
Content-Type: application/json
{
"applicationId": "{your-app-id}",
"applicationGrants": [
{
"enterpriseApplicationId":"00000003-0000-0000-c000-000000000000",
"scope":"User.Read"
},
{
"enterpriseApplicationId":"00000003-0000-0000-c000-000000000000",
"scope":"Application.Read.All"
}
]
}
地点:
{customer_id}
是目标客户租户的租户ID。{your-app-id}
是您的应用程序的应用程序 ID(也称为客户端 ID)(既是您正在使用发出此 API 请求的应用程序,也是您要在目标客户的租户中授予访问权限的应用程序)。 00000003-0000-0000-c000-000000000000
是 Microsoft Graph 的应用 ID。如果您授予其他某个 API 的访问权限,则可以使用该 API 的应用程序 ID。需要记住的一些事情: