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

Joh*_*son 3 c# azure-active-directory microsoft-graph-sdks microsoft-graph-api

我的 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")
}
Run Code Online (Sandbox Code Playgroud)

提前致谢 !

All*_* Wu 5

这是一条漫长的路。

\n\n

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

\n\n
    \n
  1. 根据App ID获取servicePrincipal的Object ID:GET\nhttps://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq\n\'{App ID}\'
  2. \n
  3. 根据步骤 1 中的对象 ID\n获取 appRole 信息(应用程序权限信息): GET\nhttps://graph.microsoft.com/beta/servicePrincipals/{Object ID}/appRoleAssignedTo。\n在此输入图像描述
  4. \n
  5. 获取 appRoleID 和 Microsoft Graph 应用程序权限名称的匹配列表:GET\nhttps://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq\n\'00000003-0000-0000-c000-000000000000\'。请注意,\n“00000003-0000-0000-c000-000000000000”是一个固定值\xef\xbc\x8c,\n表示 Microsoft 内部 Graph 应用程序的应用程序 ID。\n在此输入图像描述
  6. \n
  7. 比较第 2 步和第 3 步的结果,您将了解 Azure AD 应用程序中有哪些\n应用程序权限。
  8. \n
\n\n

顺便说一句,Get appRoleAssignment目前仅提供 beta 版本,但不建议使用 beta 版本 api。

\n\n
\n

Microsoft Graph 中 /beta 版本下的 API 可能会发生更改。\n 不支持在生产应用程序中使用这些 API。

\n
\n