使用 Microsoft.Graph 获取当前应用程序权限

Using Microsoft.Graph to get current application permissions

我的 C# 程序使用 Microsoft.Graph Nuget。并且它需要能够确保它具有正确的 Microsoft Graph 应用程序权限。

我知道如何在 AD 中添加权限,但我希望我的程序能够测试它是否具有所需的权限。

我想要实现的示例:

var graphClient = new GraphServiceClient(authenticationProvider);

if(!graphClient.GetPermissions().Contains("AdministrativeUnit.Read.All"))
{
    throw new Exception("Missing Permission AdministrativeUnit.Read.All")
}

提前致谢!

路途遥远

这里我提供Microsoft Graph beta版的总体思路(通过HTTP方式):

  1. 根据App ID获取servicePrincipal的Object ID:GET https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '{App ID}'.
  2. 获取appRole信息(应用权限信息) 基于步骤 1 中的对象 ID:GET https://graph.microsoft.com/beta/servicePrincipals/{Object ID}/appRoleAssignedTo
  3. 获取 appRoleID 和 Microsoft Graph 应用程序权限名称的匹配列表:GET https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '00000003-0000-0000-c000-000000000000'。请注意 "00000003-0000-0000-c000-000000000000"为固定值, 代表微软内部Graph App的App ID。
  4. 比较第2步和第3步的结果就知道哪个 应用程序权限在您的 Azure AD 应用程序中。

顺便说一句,Get appRoleAssignment目前只有内测版,内测版api不推荐使用

APIs under the /beta version in Microsoft Graph are subject to change. Use of these APIs in production applications is not supported.