Мне сказали задать вопрос о 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 (отредактированы)
- Запрос-аутентификация-запрос (client-request-id: 88b2bbbd-94cd-498d-a147-caad05e16eb7)
- Ошибка создания пользователя
Немного вещей, которые нужно отметить в захватах скрипача - 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 только в ответ