#azure #azure-ad-graph-api #azure-sdk-.net #azure-sdk
#azure #azure-ad-graph-api #azure-sdk-.net #azure-sdk
Вопрос:
Я использую Fluent Azure SDK для .NET, чтобы попытаться получить список всех участников службы в клиенте.
var authenticatedContext = Azure.Authenticate(
await SdkContext.AzureCredentialsFactory.FromServicePrincipal(aadClientId, aadClientSecret, tenantId, "AzureGlobalCloud")
);
var sps = authenticatedContext.ServicePrincipals.ListAsync().GetAwaiter().GetResults();
Участник службы с идентификатором клиента AAD имеет Directory.Read.Все разрешения API.
(Просто чтобы убедиться, что я ничего не пропустил: я вижу это разрешение в разделе ServicePrincipal -> Разрешения на портале Azure)
Но все же выдается следующая ошибка: Microsoft.Azure.Руководство.График.RBAC.Свободно.Модели.Исключение GraphErrorException: операция возвращает недопустимый код состояния «Запрещено»
Однако выноски для получения группы объявлений и списка подписок работают
var subs = authenticatedContext.Subscriptions.ListAsync().GetAwaiter().GetResults();
var sgs = authenticatedContext.Subscriptions.ActiveDirectoryGroups().GetByIdAsync(someId).GetAwaiter().GetResults();
Я не знаю, какие разрешения отсутствуют.
Ответ №1:
Я тестирую код на своей стороне и использую fiddler для обработки запроса. Похоже, sdk запрашивает Azure AD graph api, но не Microsoft graph api, чтобы перечислить участников службы. Итак, вам нужно добавить разрешение Directory.Read.All
для AAD graph, но не для Microsoft graph. Пожалуйста, ознакомьтесь с приведенными ниже шагами:
После добавления разрешения не забудьте предоставить согласие администратора на это. Затем вы можете успешно выполнить свой код, чтобы получить участника службы.
Кстати, есть ошибка с разрешением AAD Directory.Read.All
. Если мы добавим разрешение AAD Directory.Read.All
в зарегистрированное приложение, то разрешение не может быть удалено, даже если мы удалим его со страницы. Таким образом, вы все равно можете успешно запустить код, даже если вы удалите Directory.Read.All
с вкладки «Разрешения API» на странице.