通过 Azure AD 的 ASP.NET Core 6 身份验证:自定义登录路径

问题描述 投票:0回答:2

我正在开发一个 POC,以创建一个 Asp.Net Core 6 Web 应用程序,该应用程序能够通过 Azure AD 身份服务器和自定义本地用户数据库对用户进行身份验证。

我需要创建一个登录页面,用户可以在其中选择两种身份验证方法('/Login/Login')。

当我尝试加载非匿名页面(控制器/操作)时,系统会自动将我重定向到 Microsoft 登录页面,而不是我的自定义页面(/Login/Login)。

我尝试过一些解决方案,例如:

builder.Services
.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(options => {...}, configureCookieAuthenticationOptions: options =>
{
    options.LoginPath = new PathString("/Login/Login");
})
.EnableTokenAcquisitionToCallDownstreamApi(new[] { "user.read" })
.AddInMemoryTokenCaches();

    builder.Services.ConfigureApplicationCookie(options => {
        options.LoginPath = new PathString("/Login/Login");
    });

但似乎没有任何作用。

有什么建议吗?

谢谢!

c# asp.net-core azure-active-directory
2个回答
0
投票

您可以遵循的解决方法之一;

要使用 ASP.NET Core 应用程序重定向到具有 Microsoft 身份的自定义登录页面,您可以将以下内容添加到您的

startup.cs

  public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
            // Handling SameSite cookie according to https://learn.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-3.1
            options.HandleSameSiteCookieCompatibility();
        });

        // Sign-in users with the Microsoft identity platform
        services.AddMicrosoftIdentityWebAppAuthentication(Configuration);

        services.AddControllersWithViews(options =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        }).AddMicrosoftIdentityUI();

        services.AddRazorPages();
    }

如需完整设置,请参阅 @amanmcseGitHub 链接

有关更多信息,请参阅此微软文档|使用 ASP.NET Identity 进行外部身份验证 .


0
投票

您需要添加

services.Configure<CookieAuthenticationOptions>(options =>
       {
           options.LoginPath = "/Account/Login";
       });

在启动文件中。这将为您的应用程序添加第二个身份验证方案,因此在配置“授权”属性时不要忘记添加第二个方案

© www.soinside.com 2019 - 2024. All rights reserved.