Удалить назначение пользователя или группы корпоративному приложению с помощью Microsoft Graph - PullRequest
0 голосов
/ 02 апреля 2020

Я хотел бы удалить назначение пользователя или группы для корпоративного приложения, используя Azure График AD или Microsoft Graph в C#.

Спасибо,

Кевин

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Ответ, предоставленный juunas, правильный, я просто внесу некоторые дополнения.

Поскольку вы хотите выполнить эту операцию с помощью кода c#, так что вы можете сослаться на мои шаги ниже:

1. Установите два SDK в вашем проекте.

Install-Package Microsoft.Graph.Auth -IncludePrerelease
Install-Package Microsoft.Graph.Beta -Version 0.14.0-preview

Я ссылался на документ об установке SDK, но не могу найти AppRoleAssignments в GraphServiceClient класс. Поэтому, пожалуйста, установите SDK с указанными выше командами.

2. Пожалуйста, обратитесь к приведенному ниже коду:

using Microsoft.Graph;
using Microsoft.Graph.Auth;
using Microsoft.Identity.Client;
using System;
using System.Security;

namespace ConsoleApp13
{
    class Program
    {
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
            .Create("your client id")
            .WithTenantId("your tenantid")
            .Build();

            UsernamePasswordProvider authProvider = new UsernamePasswordProvider(publicClientApplication, new string[] { "https://graph.microsoft.com/.default" });

            GraphServiceClient graphClient = new GraphServiceClient(authProvider);

            var securePassword = new SecureString();
            string password = "your password";
            foreach (char c in password)
                securePassword.AppendChar(c);

            await graphClient.Users["user object id"].AppRoleAssignments["role assignment id"].Request().WithUsernamePassword("email account", securePassword).DeleteAsync();

            Console.WriteLine("----complete---");
        }
    }
}

role assignment id в AppRoleAssignments["role assignment id"] выше взято из запрос списка graph api : GET https://graph.microsoft.com/beta/servicePrincipals/{id}/appRoleAssignedTo/{id}

3. Перед запуском кода c# нам нужно разрешить нам назначить делегированное разрешение Directory.AccessAsUser.All в приложение и включите кнопку, показанную на скриншоте ниже. enter image description here

4. После этого мы можем запустить код и успешно удалить пользователя или группу.

5. Кстати:

(1) Код, который я предоставил, предназначен для удаления пользователей. Если вы хотите удалить групповое назначение, просто измените код следующим образом:

await graphClient.Groups["group object id"].AppRoleAssignments["role assignment id"].Request().WithUsernamePassword("email account", securePassword).DeleteAsync();

(2) Вы должны обратить внимание на бета-версию api, как упоминалось juunas.

Надеюсь, это поможет ~

0 голосов
/ 02 апреля 2020

Чтобы сделать это, вам нужно вызвать эту конечную точку в MS Graph API: https://docs.microsoft.com/en-us/graph/api/approleassignment-delete?view=graph-rest-beta&tabs=http.

Хотя в документах, похоже, ее не хватает, вы должны иметь возможность список назначений для пользователя et c. делая GET без идентификатора присваивания. Я не думаю, что вы можете угадать идентификаторы назначений, поэтому вам нужно сначала прочитать их оттуда.

И хотя в нем говорится, что вам необходимы делегированные разрешения для вызова конечной точки, это не совсем так. Вы можете предоставить приложению доступ в качестве разрешения пользователя, а затем войти в систему с пользователем и действовать от его имени. Но вы также можете сделать приложение без пользователя. Вы можете назначить роль администратора субъекту службы, выполняющему сценарий, и это также позволит ему сделать это. Это можно сделать с помощью вкладки «Роли и администраторы» в пользовательском интерфейсе управления AAD.

Единственная сложная ситуация заключается в том, что эта возможность доступна только в бета-версии MS Graph API. Но Azure AD Graph API не рекомендуется для использования. Итак, у вас есть два варианта прямо сейчас:

  1. Используйте для этого бета-версию MS Graph API и обновитесь, как только API достигнет стабильной версии
    • Бета немного нестабильны, поэтому существуют некоторые риски при использовании его в работе
  2. Использование Azure API Graph API и обновление до MS Graph API, как только оно достигнет стабильной версии
    • это обновление вероятно будет обязательным
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...