ОБЩАЯ ИНФОРМАЦИЯ: Я получил образец, работающий сегодня, благодаря множеству хороших ответов.Спасибо всем.Моей основной целью было получить информацию о текущем пользователе (ME) без использования секретного ключа.Сначала я просто использовал секретный ключ от App Reg, и это будет аутентифицировать приложение, а не пользователя.Это, конечно, не работает при вызове меня.Следующим моим выводом было то, что если вам нужен токен пользователей, вам все еще нужен токен App Reg, а затем вы запрашиваете токен пользователей.Для этого требуется меньше разрешений в App Reg, но требуется запросить два токена.В итоге я пропустил ME и просто запросил информацию для указанного пользователя (через разрешения APp Reg):
$"https://graph.microsoft.com/v1.0/users/{email}/$select=companyName"
Оба эти подхода должны быть жизнеспособными.Я обновил код ниже с рабочим образцом.
Я пытаюсь сделать очень простой вызов API графа, чтобы получить companyName от текущего пользователя.Нашли несколько образцов, но они показались очень сложными.Приложение MVC аутентифицируется посредством регистрации приложения в AAD.
Я полагаю, что для регистрации приложения необходимо авторизоваться для доступа к API Graph.Или здесь больше нужно?Получение названия компании должно быть довольно простым:
https://graph.microsoft.com/v1.0/me?$select=companyName
У кого-нибудь есть фрагмент для вызова API графа, лучше всего было бы вам извлечь извлеченный токен из контроллера?ALl помощь приветствуется.
Рабочий фрагмент:
public async Task<ActionResult> Index()
{
string clientId = "xxx";
string clientSecret = "xxx";
var email = User.Identity.Name;
AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/xxx.onmicrosoft.com/oauth2/token");
ClientCredential creds = new ClientCredential(clientId, clientSecret);
AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", creds);
HttpClient http = new HttpClient();
string url = $"https://graph.microsoft.com/v1.0/users/{email}/$select=companyName";
//url = "https://graph.windows.net/xxx.onmicrosoft.com/users?api-version=1.6";
// Append the access token for the Graph API to the Authorization header of the request by using the Bearer scheme.
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
HttpResponseMessage response = await http.SendAsync(request);
var json = response.Content.ReadAsStringAsync();
return View();
}