1

J'avais une application qui utilisait MSAL et le point de terminaison v2.0 pour se connecter aux utilisateurs et obtenir un jeton.Microsoft Graph: Le contexte authentifié actuel n'est pas valide pour cette demande.

J'ai récemment changé pour Adal et le point final normal DAA (modifie également l'application), et maintenant quand j'essaie d'utiliser le GraphService je reçois l'erreur suivante: Current authenticated context is not valid for this request

  • Mon utilisateur est admin
  • Toutes les autorisations ont été déléguées
  • le jeton est récupéré avec succès

Voici le code que j'utilise:

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; 
     } 

appel de la méthode, où l'erreur réelle se produit:

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

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

      } 

Obtenir le jeton:

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; 
     } 

Vous ne trouvez pas quoi que ce soit sur cette ligne, donc je ne suis pas sûr de savoir comment continuer .

Erreur: enter image description here

+0

Je pense que "porteur" doit être "au porteur". Je ne suis pas sûr que ce soit insensible à la casse. – RasmusW

+0

@RasmusW Ne devrait pas être, car il fonctionne en utilisant MSAL avec "support" –

+0

S'il vous plaît partager le corps de l'erreur qui contient request-id et timestamp pour aider au débogage. –

Répondre

2

Cette exception est causée par le jeton acquise en utilisant le flux des informations d'identification client. Dans ce flux, il n'y a pas de contexte pour Me.

Pour résoudre ce problème, vous devez spécifier l'événement dont vous souhaitez obtenir. Ou vous devez fournir le jeton délégué.

Code

pour votre référence:

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

Comment fournir un jeton délégué? –

+0

Le délégué-jeton est nécessaire aux utilisateurs interactifs pour entrer leur nom d'utilisateur et mot de passe. Par exemple, nous pouvons utiliser le ** Flux de Grant du Code d'Autorisation ** pour obtenir le jeton de délégué (voir [ici] (https://docs.microsoft.com/fr-fr/azure/direct-directory/develop/active -directory-protocols-oauth-code) pour ce flux). –