Подтвердить что ты не робот

Azure AD Graph вызывает создание пользователя с ошибкой с некоторой неясной ошибкой

Мне сказали задать вопрос о Azure AD Graph Api здесь вместо того, чтобы поднимать его как проблему для соответствующего репозитория GitHub, я надеюсь, что команда Azure Graph API контролирует SO и может помочь нам с эта проблема с образцом github

Некоторый дополнительный контекст для проблемы:

Мы используем Microsoft.Azure.ActiveDirectory.GraphClient nuget для создания и управления пользователями в нашем тестовом арендаторе Azure AD. После это пример приложения мы можем создавать и обновлять пользователей в Azure AD через Graph API. Это было хорошо, пока какой-то момент, который произошел около 2-3 дней назад (не уверен в точный момент, мы обнаружили проблему во вторник утром в AU. Последний успешный прогон состоялся в пятницу на прошлой неделе). Это был 100% рабочий код и подтвердить, что он не наш код - я снова пробежал образец приложения - он тоже сломан. Я протестировал его с последним GraphClient v2.1.0 и оригинальным от примера приложения, которое есть - v2.0.6

Чтобы упростить тестирование проблемы, я сделал образец, основанный на LINQ, с некоторыми отредактированными секретами (вам нужно следовать руководству образца консоли чтобы вставлять ваши значения, если вы хотите запустить его, а не оригинальное примерное приложение) Также здесь приведены фрагменты Fiddle (отредактированы)

Немного вещей, которые нужно отметить в захватах скрипача - Azure AD Graph API не возвращает токен обновления вместе с токеном доступа:

{"expires_in":"3599","token_type":"Bearer","scope":"UserProfile.Read",
"expires_on":"1441183928","not_before":"1441180028","resource":"https://graph.windows.net",
"access_token":"TOKEN WAS HERE"}

Я вижу проблему со строкой области здесь, но мы не устанавливаем какую-либо область экспликации в GraphClient при вызове токена в соответствии с примером приложения (и этот код был до того, как я упоминал раньше)

Ответ пользователя на создание понятен с точки зрения того, что происходит и почему это происходит

{"odata.error":
    {"code":"Authorization_RequestDenied","message":
        {"lang":"en","value":"Insufficient privileges to complete the operation."}
    }
}

Но неясно, как запрашивать дополнительные разрешения с помощью любого из этих AuthenticationContext.AcquireToken Перегрузка методов Также странно, что тот же самый код был полностью функциональным до и теперь разрушен после некоторых таинственных изменений?

Итак, у меня есть несколько вопросов:

  • Как добавить дополнительные разрешения области доступа в библиотеке GraphClient, чтобы получить токен Graph API с включенной модификацией пользователя. Это, вероятно, устранение проблемы с помощью группы.

  • Похоже, что Azure AD пытается управлять разрешениями для клиентских приложений в в портале. Но нет никаких дополнительных разрешений для типа приложения Native Client. Как я могу явно обновлять разрешения приложений, чтобы существующий код мог работать снова. Возможно ли это вообще?

  • Может ли кто-нибудь рекомендовать другим библиотекам взаимодействовать с GraphAPI, которые позволяют потребителю явно указать область для запрошенного токена?

================ Update ================

Да, я видел эту документацию по документу согласования. Преследуя проблему, я создал нового арендатора Azure AD, добавил новое приложение и добавил все возможные права, включая все доступные приложения и делегирование: теперь это выглядит так. Я также

Я могу получить токен с длинным списком областей, например.

Directory.AccessAsUser.All Directory.Read Directory.WriteUser.Read User.ReadWriteUser.Read.All User.ReadBasic.All User.ReadWrite.Alluser_impersonation UserProfile.Read

- вырезать несвязанные области -

Но это все равно дает мне 403:

{"odata.error":
    {"code":"Authorization_RequestDenied","message":        
        {"lang":"en","value":"Insufficient privileges to complete the operation."}
    }
}

Следует отметить одну вещь: в списке областей не существует Directory.ReadWrite.All

Но здесь docs говорит: Directory.ReadWrite.All: чтение и запись данных каталога

================ Update ================

PS: Некоторая техническая информация для инженеров Azure AD:

  • Запрос-ответ на аутентификацию имеет идентификатор-клиент-идентификатор: 88b2bbbd-94cd-498d-a147-caad05e16eb7.
  • Ошибка с неудачным графиком имеет идентификатор клиента-запроса: 882f3918-0ddd-40fe-a558-866997e32b46 только в ответ
4b9b3361

Ответ 1

Проблема в том, что вы неправильно настроили приложение для запроса правильных разрешений для API-интерфейса Graph. Для этого вы должны зайти на портал управления Azure и настроить свои "разрешения для других приложений", чтобы включить области, в которых ваше приложение должно читать/записывать в каталог.

У нас есть документация, которая должна помочь вам: https://msdn.microsoft.com/en-us/library/azure/dn132599.aspx (Описывает поток согласия) https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/graph-api-permission-scopes (описывает конкретные разрешения, предоставляемые API-интерфейсом графа, которые потребуются вашему приложению)

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