C# 如何在ASP.NET Core中为Azure AD请求正确的访问令牌以访问Microsoft Graph
我有一个ASP.NET Core应用程序,它使用ASP.NET Core标识并尝试对Azure AD进行身份验证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";
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广告验证的详细信息,请参阅。谢谢,这很有帮助。现在我有了一个“真正的”访问令牌。您的代码示例对我也有帮助。特别是为微软图形获取一个特殊的访问令牌。请考虑接受作为回答,可以帮助其他遇到相同问题的人。谢谢,这有帮助。现在我有了一个“真正的”访问令牌。您的代码示例对我也有帮助。特别是为微软图形获取一个特殊的访问令牌。请考虑接受作为回答,可以帮助其他遇到相同问题的人。