You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure AD B2C登录时/signin-oidc返回404(已调用UseAuthentication)

问题:Azure AD B2C隐式流中/signin-oidc返回404

我遇到的问题和另外两个类似问题一致,但已执行对应解决方案(调用app.UseAuthentication())。

我的场景是使用Azure AD B2C的隐式流,提交同意页面后,向/signin-oidc发送的POST请求返回404。请求负载包含state字段和id_token字段,似乎未配置处理该请求的中间件,但尚未找到配置方法。

需说明的是我正在使用GitHub Codespaces,且已解决站点代理到localhost的问题。

我的Program.cs代码

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
using Microsoft.IdentityModel.Logging;

var builder = WebApplication.CreateBuilder(args);

var services = builder.Services;

    services.Configure<CookiePolicyOptions>(options =>
    {
        // 判断给定请求是否需要用户同意非必要Cookie
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
        // 按照文档处理SameSite Cookie兼容性
        options.HandleSameSiteCookieCompatibility();
    });

    // 配置Azure AD B2C用户登录
    services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, Constants.AzureAdB2C);

    services.AddControllersWithViews()
        .AddMicrosoftIdentityUI();

    services.AddRazorPages();

    // 将appsettings中的AzureAdB2C配置绑定到IOptions
    services.AddOptions();
    services.Configure<OpenIdConnectOptions>(builder.Configuration.GetSection(Constants.AzureAdB2C));

    // 因为使用GitHub Codespaces,需要在这里设置RedirectUri
    services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
    {
        options.Events.OnRedirectToIdentityProvider = async n =>
        {
            n.ProtocolMessage.RedirectUri = "https://codespacename.preview.app.github.dev/signin-oidc"; // todo: 移到配置文件或动态生成
            await Task.CompletedTask;
        };
    });

// 向容器添加服务
builder.Services.AddControllersWithViews();

var app = builder.Build();

// 配置HTTP请求管道
if (app.Environment.IsDevelopment()) 
{
    app.UseDeveloperExceptionPage();
    IdentityModelEventSource.ShowPII = true;
}
else
{
    app.UseExceptionHandler("/Home/Error");
    // 默认HSTS值为30天,生产环境可根据需求修改
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseForwardedHeaders();

//app.UseCookiePolicy();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.MapControllers();

app.Run();

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:40:18