У меня есть приложение Web API, зарегистрированное в AAD моей компании. Это мультитенантное приложение, способное запрашивать AAD подписчиков. Когда клиенты подписываются на наш сервис, они регистрируют наше приложение в разделе регистрации корпоративных приложений AAD и предоставляют нам tenantId, clientId и clientSecret. Затем мы используем эти параметры для запроса AAD клиента.
Я использую следующее для чтения групп из Azure AD клиента:
public async Task<GraphServiceClient> CreateGraphServiceClient(string tenantId, string clientId, string clientSecret)
{
string aadInstance = "https://login.microsoftonline.com/{0}";
string resource = "https://graph.microsoft.com";
string authority = string.Format(aadInstance, tenantId);
AuthenticationContext authContext = new AuthenticationContext(authority);
ClientCredential credentials = new ClientCredential(clientId, clientSecret);
var authResult = await authContext.AcquireTokenAsync(resource, credentials);
if(authResult == null)
{
throw new Exception("GetGraphServiceClient: AcquireTokenAsync failed!");
}
var accessToken = authResult.AccessToken;
var graphServiceClient = new GraphServiceClient(
new DelegateAuthenticationProvider(
requestMessageClientOtherTenant =>
{
requestMessageClientOtherTenant.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
return Task.FromResult(0);
}));
return graphServiceClient;
}
//....
var graphServiceClient = CreateGraphClient(tenantId, clientId, clientSecret);
var graphGroupsPage = await graphServiceClient.Groups
.Request()
.Select(e => new {
e.Id,
e.DisplayName
})
.GetAsync();
Я получаю «Недостаточные привилегии для завершения» ошибка операции.
Я видел довольно много обходных путей, которым было 2-3 года, но ни один из них не работал для меня.
Разрешения, предоставленные приложению в разделе «Корпоративные приложения» клиента: ![enter image description here](https://i.stack.imgur.com/acCWl.png)
Эти разрешения в точности совпадают с разрешениями, назначенными приложению в нашей регистрации AAD.
Я нахожусь в потеря здесь. Кажется, что все необходимые разрешения предоставлены, и я все еще получаю сообщение об ошибке.
Я могу использовать тот же графический клиент, чтобы без проблем получить всех пользователей из AAD клиента.
Любое предложение будет оценено.