2017-06-07 2 views
0

J'essaie d'utiliser Microsoft Graph et je suis un peu perdu ici. J'utilise ADAL pour authentifier mon application (app id + secret) via la méthode AuthenticationContext.AcquireTokenAsync. Le code ressemble à ceci:Microsoft Graph: comment faire en sorte que tous les groupes réutilisent le jeton généré via ADAL

AuthenticationContext AuthContext = new AuthenticationContext(Authority); 
ClientCredential ClientCredential = new ClientCredential(ClientId, AppKey); 
var result = await AuthContext.AcquireTokenAsync(
             "https://graph.windows.net", 
             ClientCredential); 

Maintenant, si je réutiliser le jeton avec Azure graphique, je peux récupérer tous les groupes en utilisant ce code:

var url = $"https://graph.windows.net/myorganization/groups?api-version=1.6"; 
var client = new HttpClient(); 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", resultAccessToken); 
    var response = await client.GetAsync(url); 
    if (response.Content != null) { 
     Console.WriteLine(await response.Content.ReadAsStringAsync()); 
    } 

Selon les docs, je utiliser la nouvelle API Microsoft Graph, mais je vais avoir des problèmes lorsque je tente d'utiliser le code suivant:

var authenticationProvider = new DelegateAuthenticationProvider(
     req.Headers.Authorization = new AuthenticationHeaderValue("bearer", 
              resultAccessToken.AccessToken); 
     return Task.CompletedTask; 
}); 
var graph = new GraphServiceClient(authenticationProvider); 
var groups = await graph.Groups 
        .Request() 
        .GetAsync(); 

Chaque fois que je lance, je finissent par obtenir l'exception suivante:

Exception non gérée: System.AggregateException: une ou plusieurs erreurs se sont produites. ---> Microsoft.Graph.ServiceException: Code: InvalidAuthenticationToken Message: Échec de la validation du jeton d'accès.

Il est évident qu'il me manque quelque chose ici, mais quoi? (btw, j'ai réussi à tout faire fonctionner avec les bibliothèques MSAL, mais dans ce cas, j'ai vraiment besoin d'avoir mon composant intégré avec d'autres qui utilisent ADAL),

Merci.

Luis

Répondre

2

Le DAA graphique et Microsoft Graph ont des points de terminaison physiques.

Pour appeler le DAA graphique, vous avez besoin d'un jeton avec le public revendication https://graph.windows.net

Pour appeler le Microsoft Graph, vous avez besoin d'un jeton avec la revendication du public https://graph.microsoft.com

Cela signifie que vous devez faire 2 choses :

  1. Assurez-vous que votre application est configurée sur Microsoft Graph. (Cela signifie que vous devez mettre à jour la configuration de votre application pour appeler d'autres ressources.)
  2. Mettez à jour votre code pour demander un jeton pour la ressource appropriée.

J'espère que cela aide!

+0

Merci Shawn! Merde ... erreur stupide. –