簡體   English   中英

如何在ASP.NET Core中為Azure AD請求正確的訪問令牌以訪問Microsoft Graph

[英]How do request a correct access token in ASP.NET Core for Azure AD to access Microsoft Graph

我有一個使用ASP.NET Core Identity並嘗試針對Azure AD進行身份驗證的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時,Graph aPI返回錯誤:

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

當我查看access_token時,看起來很奇怪。 這不是有效的JWT。 AQABAAAAAABHh4kmS_aKT5XrjzxRAtHzymKlkayx9UvCfyg_uHq1prmSP8f0Mi5BfiqkdIZeqJsBbm9SSbDbMrQ0JgNa6pa6M97IjVr6ZHdtt3ryT8vns_kz5BxkdJFkL79Ql3ywzyKldfLuX9jwq1eCgQ1MMdqKUDW4q5g38...

我做錯了什么?

您需要使用OnAuthorizationCodeReceived通知,該通知可用於使用ADAL / MSAL獲取Microsoft graph API的訪問令牌。 請參閱此博客以獲取ASP.NET Core 2.0 Azure AD身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM