.NET Core WsFederation Autenticación bucle de inicio de sesión en localhost

Estoy tratando de implementar la autenticación WsFederation Azure AD en mi aplicación, de modo que los usuarios deben iniciar sesión tan pronto como accedan a la aplicación. Sin embargo, cuando se inicia la aplicación, se dirige a la instancia de AAD, pero luego se atasca en un bucle con una pantalla en blanco.

Mi aplicación se ejecuta enhttp: // localhost: 61213 /, en el que lo agregué como ReplyUrl en el panel de registro de aplicaciones de Azure.

Otras respuestas a esto sugieren que la aplicación debería ejecutarse a través de https, sin embargo, cuando intenté implementar esos cambios, todavía no funciona.

¿Algunas ideas? ¡Gracias por adelantado

Edita

He cambiado la aplicación para usar SSL en VS, por lo que se ejecuta en https. El problema de bucle aún persiste.

Startup.cs

    private void ConfigureAuth(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            options.CheckConsentNeeded = context => false;
            options.MinimumSameSitePolicy = SameSiteMode.None;
            options.Secure = CookieSecurePolicy.SameAsRequest;
        });

        services.AddAuthentication(sharedOptions =>
            {
                sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
            })
            .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
                options =>
                {
                    options.Cookie.Name = ".AspNet.SharedCookie";
                    options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
                    options.Cookie.SameSite = SameSiteMode.None;
                })
            .AddWsFederation(options =>
            {
                options.MetadataAddress =
                    $"https://login.microsoftonline.com/{aadTenant}/federationmetadata/2007-06/federationmetadata.xml";
                options.Wtrealm = wTrealm;
                options.Wreply = "http://localhost:61213/";
                options.RequireHttpsMetadata = false;
            });

        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();

        if (env.IsProduction())
        {
            app.UseStaticFiles();
            app.UseSpaStaticFiles();
        }

        app.Use(async (context, next) =>
        {
            if (!context.User.Identity.IsAuthenticated)
            {
                await context.ChallengeAsync(WsFederationDefaults.AuthenticationScheme);
            }
            else
            {
                await next();
            }
        });

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller}/{action=Index}/{id?}");
        });

        app.UseSpa(spa =>
        {
            // To learn more about options for serving an Angular SPA from ASP.NET Core,
            // see https://go.microsoft.com/fwlink/?linkid=864501

            spa.Options.SourcePath = "ClientApp";

            if (env.IsDevelopment())
            {
                spa.UseAngularCliServer(npmScript: "start");
            }
        });

        app.UseCookiePolicy();
        app.UseAuthentication();
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta