2016-01-27 6 views
1

Я получаю следующую ошибку при попытке получить AccessToken.Microsoft Graph Client не указан ресурс в requiredResourceAccessList

/MicrosoftGraph/Авторизуйте? Ошибка = ACCESS_DENIED & error_description = AADSTS65005% 3a + кнопки + + клиент приложения + имеет + + доступ с просьбой + к + ресурса +% 27https% 3a% 2f% 2fgraph.microsoft.com% 2f% 27 . + Этот запрос + провалился + + +, потому что еще + не + указано + клиент + + это + ресурс + в + его + requiredResourceAccess + список.% 0D% 0aTrace + ID% 3a + 7cd46ad3-d294-41ad-98ec -6ef06db7a0db% 0D% 0aCorrelation + ID% 3a + 4e2a6d3b-b3dd-4a98-b36d-550d8f8c3382% 0D% 0aTimestamp% 3a + 2016-01-27 + 10% 3A40% 3a12Z

Который ... graph.microsoft .com Этот запрос не удался, потому что клиент не указал этот ресурс в своем списке требуемых ресурсовResourceAccess

Это мульти itenant в Azure Active Directory. Я могу успешно войти в систему с одним из моих идентификаторов электронной почты, но не с другим.

Куда я иду не так? Что мне не хватает?

Код сниппета:

public ActionResult Login() { 
    .... 
Uri authUri = authContext.GetAuthorizationRequestURL(
      MicrosoftGraphSettings.O365UnifiedAPIResource, 
      MicrosoftGraphSettings.ClientId, 
      loginRedirectUri, 
      UserIdentifier.AnyUser, 
      null); 
string authUriAsString = authUri.ToString(); 
return Redirect(authUriAsString); 
} 

public async Task<ActionResult> Authorise() 
{ 
    Uri loginRedirectUri = new Uri(Url.Action("Authorise", "MicrosoftGraph", null, Request.Url.Scheme)); 
    var authContext = new AuthenticationContext(MicrosoftGraphSettings.AzureADAuthority); 

    var authResult = await authContext.AcquireTokenByAuthorizationCodeAsync(
      Request.Params["code"],            
      loginRedirectUri,            
      new ClientCredential(MicrosoftGraphSettings.ClientId, MicrosoftGraphSettings.ClientSecret), 
      MicrosoftGraphSettings.O365UnifiedAPIResource); 
} 

Я попытался следующие

public static string O365UnifiedAPIResource = @"https://graph.microsoft.com/"; 
//public static string O365UnifiedAPIResource = @"https://graph.windows.net/"; 

Используя второй, аутентификация прошла успешно, но всякий раз, когда я использую мой существующий код для списка файлов доступа в OneDrive для бизнес-аккаунта или создания текстового файла он выдает исключение Unauthorized при вызове API.

ответ

0

Это сообщение об ошибке указывает, что ваше приложение не имеет делегированных разрешений для ресурса «Microsoft Graph» (https://graph.microsoft.com/).

Чтобы настроить делегированные разрешения для этого ресурса, используйте портал управления Azure (https://manage.windowsazure.com). Найти приложение -> Настроить -> «Разрешения для других приложений» -> «Добавить приложение» -> выберите «Microsoft Graph».

Поскольку вы можете получить токен для «https://graph.windows.net/», у вашего приложения уже есть разрешения, настроенные для ресурса Windows Azure Active Directory, но это другой ресурс, чем «Microsoft Graph».

+0

Спасибо Marek. Ваше решение работало хорошо! – Bond