如何在 ASP.NET Core for Azure AD 中请求正确的访问令牌以访问 Microsoft Graph
How do request a correct access token in ASP.NET Core for Azure AD to access Microsoft Graph
我有一个 ASP.NET 核心应用程序使用 ASP.NET 核心身份并尝试针对 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_token 中声明的发送)。
但是当我使用从登录流程中收到的 access_token 时,图形 aPI returns 出现错误:
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 认证请参考this blog。
我有一个 ASP.NET 核心应用程序使用 ASP.NET 核心身份并尝试针对 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_token 中声明的发送)。 但是当我使用从登录流程中收到的 access_token 时,图形 aPI returns 出现错误:
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 认证请参考this blog。