要求: 当 Entra ID 身份验证过程中发生任何错误时,应在新选项卡中打开自定义错误页面,并在第一个选项卡中保留原始错误消息。
Entra ID认证流程: 让我们假设一个带有登录按钮的网站。当用户位于登录页面时,控制权就在我们手中。当用户单击“登录”按钮时,他们将被重定向到 Entra ID 进行身份验证。现在控制权位于 Microsoft Entra ID 一侧。身份验证成功后,控件将被重定向到注册应用程序中添加的“重定向 URL(我们的网站)”,将控件与 ID 令牌一起返回给我们。
问题: 当身份验证过程中发生错误并且微软给出了一个像帖子中共享的错误页面时,控件就会卡在那里。 该错误可能是来自 CA 政策或其他来源的任何内容。
当出现微软错误页面时,有什么方法可以让控制权返回到应用程序吗?
我尝试在.net core MVC 6.0 中使用“OnAuthenticationFailed”。
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddMicrosoftIdentityWebApp(options =>
{
builder.Configuration.Bind("AzureAd", options);
options.Events = new OpenIdConnectEvents
{
OnAuthenticationFailed = context =>
{
// Redirect to a custom error page on authentication failure
context.Response.Redirect("/Home/Error");
context.HandleResponse();
return Task.CompletedTask;
}
};
});
“OnAuthenticationFailed”究竟何时触发?
提前致谢!
如果 Entra ID 中存在错误页面并且没有重定向回应用程序,则您的应用程序在这种情况下无能为力。
OnAuthenticationFailed 当处理来自 Entra ID 的回调以某种方式失败时(例如返回错误或授权代码交换失败),会发生。 仅当 Entra ID 重定向回您的应用程序时才会发生这种情况。