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

时间:2019-10-27 23:30:41

标签: c# azure-active-directory microsoft-graph microsoft-graph-sdks

我的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")
}

谢谢!

1 个答案:

答案 0 :(得分:0)

很长的路要走

在这里,我通过HTTP方法提供了Microsoft Graph beta版的一般概念:

  1. 基于应用程序ID:GET https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '{App ID}'获取servicePrincipal的对象ID。
  2. 获取appRole信息(应用程序许可信息) 基于步骤1:GET https://graph.microsoft.com/beta/servicePrincipals/{Object ID}/appRoleAssignedTo的对象ID。 enter image description here
  3. 获取appRoleID和Microsoft Graph应用程序权限名称:GET https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '00000003-0000-0000-c000-000000000000'的匹配列表。请注意 “ 00000003-0000-0000-c000-000000000000”是固定值,其中 代表Microsoft内部Graph App的App ID。 enter image description here
  4. 比较第二步和第三步的结果,您将知道 应用程序权限在您的Azure AD应用程序中。

顺便说一句,Get appRoleAssignment当前仅在beta版中可用,但不建议使用beta版api。

  Microsoft Graph中/ beta版本下的

API可能会更改。   不支持在生产应用程序中使用这些API。