2017-10-20 13 views
0

ASP.NET Core Identityを使用し、Azure ADに対する認証を試みているASP.NET Coreアプリケーションがあります。Azure ADがASP.NET GraphにアクセスするためのASP.NET Coreで正しいアクセストークンを要求する方法

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

すべて正常に動作し、ユーザーは資格情報を使用してログインできます。

私は、ユーザーの電子メールアドレスを受け取るためにMicrosoft Graphにアクセスしようとしています(id_tokenで要求として送信しません)。私は、ログインフローから受信したaccess_tokenはを使用した場合でも、グラフAPIがエラーを返し :

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

私はそれが奇妙に見えるaccess_tokenはを見てみると。それは有効なJWTではありません。 AQABAAAAAABHh4kmS_aKT5XrjzxRAtHzymKlkayx9UvCfyg_uHq1prmSP8f0Mi5BfiqkdIZeqJsBbm9SSbDbMrQ0JgNa6pa6M97IjVr6ZHdtt3ryT8vns_kz5BxkdJFkL79Ql3ywzyKldfLuX9jwq1eCgQ1MMdqKUDW4q5g38...

私は間違っていますか?

答えて

2

ADAL/MSALを使用してmicrosoft graph apiのアクセストークンを取得するために使用できる通知OnAuthorizationCodeReceivedを使用する必要があります。 ASP.NET Core 2.0 Azure AD認証については、this blogを参照してください。

+0

ありがとうございました。今私は "本当の"アクセストークンを持っています。あなたの[GitHub repo](https://github.com/juunas11/aspnetcore2aadauth)のコードサンプルも私を助けました。特に、Microsoft Graph用の特別なアクセストークンを取得しています。 –

+0

同じ問題を抱える人を助けるかもしれない答えとして受け入れることを検討してください。 –

関連する問題