1

У меня было приложение, которое использовало MSAL и конечную точку v2.0 для входа пользователей и получения токена.График Microsoft: текущий аутентифицированный контекст недействителен для этого запроса

Недавно я изменил его на Адал и нормальной AAD конечной точки (также меняется приложение), и теперь, когда я пытаюсь использовать GraphService я получаю следующее сообщение об ошибке: Current authenticated context is not valid for this request

  • мой пользователь администратор
  • Все права делегированы
  • маркер успешно получен

Вот код, я использую:

public static GraphServiceClient GetAuthenticatedClient() 
     { 
      GraphServiceClient graphClient = new GraphServiceClient(
       new DelegateAuthenticationProvider(
        async (requestMessage) => 
        { 
         string accessToken = await SampleAuthProvider.Instance.GetUserAccessTokenAsync(); 

         // Append the access token to the request. 
         requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken); 
        })); 
      return graphClient; 
     } 

Вызов метода, когда фактическая ошибка происходит:

try 
      { 
       // Initialize the GraphServiceClient. 
       GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient(); 

       // Get events. 
       items = await eventsService.GetMyEvents(graphClient); 
      } 
      catch (ServiceException se) 
      { 

      } 

Получение токена:

public async Task<string> GetTokenAsync() 
     { 
      ClientCredential cc = new ClientCredential(appId, appSecret); 
      AuthenticationContext authContext = new AuthenticationContext("https://login.microsoftonline.com/tenant.onmicrosoft.com"); 
      AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.microsoft.com", cc); 

      return result.AccessToken; 
     } 

Не можете найти что-нибудь на этом онлайн, так что я не знаю, как продолжить ,

Ошибка: enter image description here

+0

Я думаю, что «носитель» должен быть «Знаменосец». Я не уверен, что это без учета регистра. – RasmusW

+0

@RasmusW Не должно быть, поскольку он работает с MSAL с «несущим» –

+0

Просьба поделиться телом ошибки, который содержит идентификатор запроса и временную метку, чтобы помочь отладить. –

ответ

2

Это исключение вызвано лексемы приобретаемой с помощью клиента потоку полномочия. В этом потоке нет никакого контекста для Me.

Чтобы устранить эту проблему, вам необходимо указать, чье событие вы хотите получить. Или вам нужно предоставить токен-делегат.

код для справки:

//var envens=await graphClient.Me.Events.Request().GetAsync(); 
var envens = await graphClient.Users["[email protected]"].Events.Request().GetAsync(); 
+0

Как предоставить токен делегата? –

+0

Участнику-токену необходимо, чтобы пользователи интерактивно вводили свое имя пользователя и пароль. Например, мы можем использовать поток ** Разрешения для кода авторизации ** для получения токена-делегата (см. [Здесь] (https://docs.microsoft.com/en-us/azure/active-directory/develop/active -directory-protocols-oauth-code) для этого потока). –