.Net 6 Blazor 服务器端 Azure ADB2C 注销问题

.Net 6 Blazor Server-Side Azure ADB2C Sign Out Issue

我开始了一个使用 .Net 5 和 Azure ADB2C 的全新项目,但后来 .Net 6 出来了,所以我们决定继续并重新创建我们在 .Net 6 中的少量代码。一个曾经有效但现在不再有效的是注销功能。我在 Azure AD B2C 方面没有做任何更改。在 .Net 5 项目中,我所要做的就是将用户发送到“MicrosoftIdentity/Account/SignOut”以将其注销,只要我有以下代码自动将用户发送回主页(登录页面):

 services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
 {
      // Configures the Sign Out action to redirect back to the home page, which will navigate to the login page
      options.Events.OnSignedOutCallbackRedirect = async context =>
      {
           context.HttpContext.Response.Redirect(context.Options.SignedOutRedirectUri);
           context.HandleResponse();
       };
}

在 .Net 6 版本上,我的所有代码都非常相似(甚至包都是相同的)所以我不确定为什么 URL 停止工作。在做了一些研究之后,我发现了这个 MS 文档:https://docs.microsoft.com/en-us/azure/active-directory-b2c/openid-connect#send-a-sign-out-request to create a special URL with Azure ADB2C for "end_session_endpoint" 但是当我导航到它时,它除了重定向之外什么都不做我回到应用程序仍然登录。

这是我正在使用的软件包:

<PackageReference Include="Microsoft.Graph" Version="4.10.0" />
<PackageReference Include="Microsoft.Identity.Web" Version="1.20.0" />
<PackageReference Include="Microsoft.Identity.Web.UI" Version="1.20.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />

这是我 Program.cs 上的示例:

var builder = WebApplication.CreateBuilder(args);

// Set static properties to hold Configuration and Environment
ConfigurationHelper.Configuration = builder.Configuration;
ConfigurationHelper.Environment = builder.Environment;

// Add services to the container.
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAdB2C"));

builder.Services.AddControllersWithViews().AddMicrosoftIdentityUI();

builder.Services.AddAuthorization(options =>
{
    // By default, all incoming requests will be authorized according to the default policy
     options.FallbackPolicy = options.DefaultPolicy;
});

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor().AddMicrosoftIdentityConsentHandler();
var app = builder.Build();
...

解决其他不相关的问题后,将用户发送到 URL“MicrosoftIdentity/Account/SignOut”正在运行。据我所知,Microsoft.Identity.Web.UI 是 运行 我的退出代码,我在启动时拥有的代码可以连接退出回调事件以重定向用户。我仍然认为 Azure AD B2C“end_session_endpoint”对我不起作用很奇怪,但也许这与 Microsoft.Identity.Web 管理会话的方式有关。