Добавьте пользователя в Azure Active Directory, используя https://graph.microsoft.com с ActiveDirectoryClient

Я пытаюсь добавить пользователя в Active Directory моего клиента Azure.

Я использую Microsoft Graph API. Тот же самый, выставленный через Graph Explorer здесь.

Проблема в том, что какой бы serviceRootURI я не проходил, я получаю исключение.

Я успешно получаю токен методом GetTokenForApplication:

ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot,
                      async () => await GetTokenForApplication());

Однако, когда я звоню:

await activeDirectoryClient.Users.AddUserAsync(aadUser);

Он выдает это исключение:

 "{\r\n
    \"error\": {\r\n
                   \"code\": \"BadRequest\",\r\n
                   \"message\": \"Query parameter api-version not allowed\",\r\n    
                   \"innerError\": {\r\n
                                    \"request-id\": \"57327a85-8320-4363-b5f9-aeacdf782861\",\r\n
                                    \"date\": \"2019-05-30T21:59:55\"\r\n
                                   }\r\n
               }\r\n
}"

Это serviceRootURI, который я использую: "https://graph.microsoft.com/v1.0"

Какой URI следует передать в serviceRoot?

Совместим ли ActiveDirectoryClient с Microsoft Graph? Я спрашиваю, потому что образец, в котором я видел использование ActiveDirectoryClient, использовал Azure AD Graph API.

Этот Сообщение блога показывает разницу между старым Azure AD Graph API и новым Microsoft Graph API. Кстати: Microsoft советует нам использовать Microsoft Graph API, потому что все новые разработки будут сосредоточены на нем.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
710
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вы пытаетесь использовать более новый API Microsoft Graph (https://graph.microsoft.com), но используете клиентскую библиотеку для более старого API Graph Azure AD (https://graph.windows.net)

Подробно о сравнении можно прочитать здесь - Microsoft Graph или Azure AD Graph

Вот сведения о пакете nuget и классе:

API-интерфейс Microsoft Graph

  • Microsoft.Graph пакет nuget — для работы с Microsoft Graph API и использования GraphServiceClient класса.

API графов Azure AD

  • Microsoft.Azure.ActiveDirectory.GraphClient пакет nuget — для работы с Azure AD Graph API и использования класса ActiveDirectoryClient.

Код для клиента API Microsoft Graph

Документы Microsoft — Создание пользователя — пример кода SDK

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var user = new User
{
    AccountEnabled = true,
    DisplayName = "displayName-value",
    MailNickname = "mailNickname-value",
    UserPrincipalName = "[email protected]",
    PasswordProfile = new PasswordProfile
    {
        ForceChangePasswordNextSignIn = true,
        Password = "password-value"
    }
};

await graphClient.Users
    .Request()
    .AddAsync(user);

Именно это ... Я только что нашел образец проекта после публикации этого вопроса. Проект содержит фрагменты для Microsoft Graph: github.com/microsoftgraph/aspnet-фрагменты-образец... взглянул на код и увидел, что они используют GraphServiceClient из Microsoft.Graph пакета NuGet. Ты сделал это! Спасибо.

Leniel Maccaferri 31.05.2019 00:28

Для B2C по-прежнему следует использовать Azure AD Graph (граф.виндовс.нет). Он предоставляет некоторые пользовательские атрибуты, которых нет в MS Graph.

Marc 31.05.2019 00:44

Я попытался добавить пользователя с учетной записью GMail, и мне не удалось добавить {"Code: Request_BadRequest\r\nMessage: Property userPrincipalName is invalid.\r\n\r\nInner error\r\n"}... вопрос: для добавления внешних учетных записей \ неорганизационных учетных записей мне нужно будет использовать Azure AD Graph или мне нужен каталог B2C?

Leniel Maccaferri 31.05.2019 01:10

Я думаю, что для приглашения внешних пользователей доступен другой API. Посмотрите здесь. .

Rohit Saigal 31.05.2019 01:38

Graph предназначен для добавления локальных пользователей в b2C, а не федеративных, как Gmail. Вы не можете добавить пользователя Gmail, так как знаете его внутренний идентификатор пользователя Gmail. Скорее позвольте этим пользователям зарегистрироваться и, возможно, использовать функцию REST, чтобы добавить любые дополнительные атрибуты, которые у вас есть о них где-то еще. Azure AD Graph — это просто REST API (альтернатива MS Graph). Его следует использовать для операций пользователей B2C.

Marc 31.05.2019 04:10

Я ужасно извиняюсь: хотя я искал запросы, связанные с B2C. Ваш не связан с B2C, поэтому мои комментарии неуместны. Пожалуйста, игнорируйте. Используйте docs.microsoft.com/en-us/azure/active-directory/b2b/…, чтобы пригласить пользователей Gmail в обычный клиент AAD. Сначала убедитесь, что вы интегрируете свой клиент с Gmail.

Marc 31.05.2019 04:13

Другие вопросы по теме