2017-10-20 25 views
0

J'ai une application ASP.NET Core utilisant ASP.NET Core Identity et essayant de m'authentifier sur Azure AD.Comment demander un jeton d'accès correct dans ASP.NET Core pour Azure AD pour accéder à Microsoft Graph

services.AddAuthentication() 
    .AddOpenIdConnect("AzureAD", "Azure AD", option => 
    { 
     option.ClientId = Configuration["AzureAD:AppId"]; 
     option.ClientSecret = "abc"; 
     option.Authority = string.Format(Configuration["AzureAd:AadInstance"], Configuration["AzureAd:Tenant"]); 
     option.SignedOutRedirectUri = Configuration["AzureAd:PostLogoutRedirectUri"]; 
     option.ResponseType = OpenIdConnectResponseType.CodeIdToken; 
     option.SaveTokens = true; 
     option.SignInScheme = IdentityConstants.ExternalScheme; 
     option.Events = new OpenIdConnectEvents 
     { 
      OnRemoteFailure = OnAuthenticationFailed,      
     }; 
    }); 

Tout fonctionne correctement, l'utilisateur peut se connecter en utilisant ses informations d'identification.

Maintenant, j'essaie d'accéder à Microsoft Graph afin de recevoir l'adresse e-mail de l'utilisateur (ce n'est pas envoyé comme réclamation dans le id_token). Mais quand je l'utilise Received access_token du flux de connexion du graphe api renvoie une erreur:

Code: InvalidAuthenticationToken 
Message: CompactToken parsing failed with error code: -2147184105 

Quand je regarde le access_token il semble bizarre. Ce n'est pas un JWT valide. AQABAAAAAABHh4kmS_aKT5XrjzxRAtHzymKlkayx9UvCfyg_uHq1prmSP8f0Mi5BfiqkdIZeqJsBbm9SSbDbMrQ0JgNa6pa6M97IjVr6ZHdtt3ryT8vns_kz5BxkdJFkL79Ql3ywzyKldfLuX9jwq1eCgQ1MMdqKUDW4q5g38...

Qu'est-ce que je fais mal?

Répondre

2

Vous devez utiliser la notification OnAuthorizationCodeReceived qui peut être utilisée pour acquérir un jeton d'accès pour API Microsoft Graph en utilisant ADAL/MSAL. Reportez-vous à this blog pour l'authentification AD ASP.NET Core 2.0 Azure AD.

+0

Merci, cela m'a aidé. Maintenant, j'ai un "vrai" jeton d'accès. Vos exemples de code de votre [GitHub repo] (https://github.com/juunas11/aspnetcore2aadauth) m'ont également aidé. Surtout obtenir un jeton d'accès spécial pour Microsoft Graph. –

+0

S'il vous plaît envisager d'accepter comme réponse qui peut aider les autres qui rencontrent le même problème. –