C# 如何在ASP.NET Core中为Azure AD请求正确的访问令牌以访问Microsoft Graph

C# 如何在ASP.NET Core中为Azure AD请求正确的访问令牌以访问Microsoft Graph,c#,azure,oauth-2.0,azure-ad-graph-api,asp.net-core-2.0,C#,Azure,Oauth 2.0,Azure Ad Graph Api,Asp.net Core 2.0,我有一个ASP.NET Core应用程序,它使用ASP.NET Core标识并尝试对Azure AD进行身份验证 services.AddAuthentication() .AddOpenIdConnect("AzureAD", "Azure AD", option => { option.ClientId = Configuration["AzureAD:AppId"]; option.ClientSecret = "abc";

我有一个ASP.NET Core应用程序,它使用ASP.NET Core标识并尝试对Azure AD进行身份验证

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_令牌中没有作为声明发送)。 但是,当我使用从登录流接收的access_令牌时,Graph aPI返回一个错误:

Code: InvalidAuthenticationToken
Message: CompactToken parsing failed with error code: -2147184105
当我看到访问令牌时,它看起来很奇怪。这不是一个有效的JWT。
AQABAAABHH4KMS\u AKT5xRJZXRATHZYMKKYK9UVCFYG\u uHq1prmSP8f0Mi5BfiqkdIZeqJsBbm9SSbDbMrQ0JgNa6pa6M97IjVr6ZHdtt3ryT8vns\u KZ5BxKDJFKL79QL3YWZYKKLDFLUX9JWQ1ECGQ1MMDQKUDW4Q5G38…


我做错了什么?

您需要使用
OnAuthorizationCodeReceived
通知,该通知可用于使用ADAL/MSAL获取microsoft graph api的访问令牌。有关ASP.NET Core 2.0 Azure AD身份验证,请参阅。

您需要使用
OnAuthorizationCodeReceived
通知,该通知可用于使用ADAL/MSAL获取microsoft graph api的访问令牌。有关ASP.NET Core 2.0 Azure广告验证的详细信息,请参阅。

谢谢,这很有帮助。现在我有了一个“真正的”访问令牌。您的代码示例对我也有帮助。特别是为微软图形获取一个特殊的访问令牌。请考虑接受作为回答,可以帮助其他遇到相同问题的人。谢谢,这有帮助。现在我有了一个“真正的”访问令牌。您的代码示例对我也有帮助。特别是为微软图形获取一个特殊的访问令牌。请考虑接受作为回答,可以帮助其他遇到相同问题的人。