Azure B2C应用AADB2C99002错误页无法重定向至自定义页面求助
解决Azure B2C自定义错误页(AADB2C99002)重定向问题
1. 在Azure B2C门户配置自定义错误页
- 登录Azure门户,进入你的B2C租户。
- 选择用户流或自定义策略,找到当前使用的用户流。
- 切换到错误页面选项卡,启用"自定义错误页面"。
- 添加错误码
AADB2C99002,并设置对应的错误页URL为https://你的域名/Home/Error。 - 保存配置。
2. 覆盖ASP.NET Core Identity的错误处理逻辑
在ConfigureServices方法中,修改Microsoft Identity的配置,拦截远程认证失败的默认处理:
using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.Identity.Web; public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); services.AddRazorPages(); services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(options => { Configuration.Bind("AzureAdB2C", options); // 自定义远程认证失败的处理逻辑 options.Events.OnRemoteFailure = context => { // 可根据错误信息细化处理,比如判断context.Failure.Message是否包含AADB2C99002 context.Response.Redirect("/Home/Error"); context.HandleResponse(); // 阻止系统跳转到默认错误页 return Task.CompletedTask; }; }); services.AddAuthorization(options => { options.FallbackPolicy = options.DefaultPolicy; }); }
3. 完善Home控制器的Error方法
确保HomeController中的Error方法可以接收并展示错误信息:
public class HomeController : Controller { public IActionResult Error() { // 获取认证错误详情 var authError = HttpContext.Features.Get<Microsoft.AspNetCore.Authentication.AuthenticationFailedContext>()?.Failure; var errorId = Request.Query["errorId"]; // 将错误信息传递到视图 ViewBag.ErrorMessage = authError?.Message; ViewBag.ErrorId = errorId; return View(); } }
4. 确认中间件顺序
你的现有Configure方法中间件顺序符合要求,保持UseAuthentication、UseAuthorization在UseRouting之后、UseEndpoints之前即可。
完成以上配置后,触发AADB2C99002错误时,系统会重定向到你自定义的/Home/Error页面。
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

