Blazor服务器应用程序中的Azure AD B2C:注销后登录时出错

fxnxkyjh  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(139)

在与Azure AD B2C集成进行身份验证时,我在Blazor Server应用程序中遇到了一个零星问题。这个问题似乎主要出现在用户注销然后被重定向到登录页面时。如果他们尝试使用不同的凭据登录,我们经常会看到以下错误消息:

**我们在为您登录时遇到问题。请稍后再试。

有趣的是,如果用户刷新页面并尝试再次登录,登录通常会成功,没有任何问题。
详细信息:
Blazor版本:.NET 7授权配置:FallbackPolicy -要求对整个应用程序进行身份验证重新路由配置:

app.UseRewriter(
    new RewriteOptions().Add(
        context =>
        {
            if (context.HttpContext.Request.Path == "/MicrosoftIdentity/Account/SignedOut")
            {
                context.HttpContext.Response.Redirect("/MicrosoftIdentity/Account/SignIn");
            }
        }
        ));

复制步骤:
使用Azure AD B2C登录Blazor应用程序。从应用程序中注销。重定向到Azure AD B2C登录页面。尝试使用其他凭据登录。
有没有人遇到过这个或类似的问题?任何帮助故障排除或解决这一点将不胜感激。
在此先谢谢您!
考虑到这个问题可能源于在用户注销后直接将他们重定向到登录页面,我修改了我的URL重写规则。我将重定向目标从/MicrosoftIdentity/Account/SignIn更改为主路由/。

hts6caw3

hts6caw31#

如果用户注销应用程序,然后尝试使用不同的凭据再次登录而不刷新页面。在这种情况下,应用程序仍将具有上一个登录会话中的Cookie,这可能会导致Azure AD B2C拒绝新的登录尝试。
以下是在用户注销后将用户重定向到Azure AD B2C登录页面的方法。AzureAdB2CAuthenticationBuilder.AddAccountSignedOutRedirect()方法将Azure AD B2C配置为在用户注销后自动将其重定向到登录页面。services.AddAuthentication(AzureAdB2CDefaults.AuthenticationScheme)program.cs

services.AddAuthentication(AzureAdB2CDefaults.AuthenticationScheme)
    .AddAzureAdB2C(options =>
    {   options.AddAccountSignedOutRedirect("/MicrosoftIdentity/Account/SignIn");
    });
  • appsettings.json*
{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "microsoft.onmicrosoft.com",
    "TenantId": "TenantId",
    "ClientId": "ClientId",
    "CallbackPath": "/signin-oidc",
    "ClientSecret": "Client secret",
    "ClientCertificates": []
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

输出

相关问题