Использование Microsoft.Graph для получения текущих разрешений приложения - PullRequest
0 голосов
/ 28 октября 2019

Моя 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 голосов
/ 31 октября 2019

Это долгий путь.

Здесь я приведу общее представление о бета-версии Microsoft Graph (через метод HTTP):

  1. Получите идентификатор объекта в servicePrincipal на основеИдентификатор приложения: GET https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '{App ID}'.
  2. Получите информацию appRole (информацию о разрешениях приложения) на основе идентификатора объекта из шага 1: GET https://graph.microsoft.com/beta/servicePrincipals/{Object ID}/appRoleAssignedTo. 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. enter image description here
  4. Сравните результаты 2-го и 3-го шагов, и вы узнаете, какие разрешения для приложения есть в вашем приложении Azure AD.

Кстати, Get appRoleAssignment в настоящее время доступно только в бета-версии, но использовать бета-версию api не рекомендуется.

API-интерфейсы в / beta-версии в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается.

...