IsAuthenticate ложно для вызовов servicestack, но верно для mvc контроллеров - PullRequest
1 голос
/ 16 июня 2020

Я настроил. Net Ядро, чтобы я мог успешно войти в систему и получить доступ к MVC контроллеру API за атрибутом Microsoft.AspNetCore.Authorization [Authorize()] и увидеть зарегистрированное удостоверение.

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthentication()
                .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options))
                .AddAzureADB2CBearer(options => Configuration.Bind("AzureAdB2C", options));

            services.AddAuthorization(options =>
            {
                options.DefaultPolicy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .AddAuthenticationSchemes(AzureADB2CDefaults.AuthenticationScheme, AzureADB2CDefaults.BearerAuthenticationScheme)
                .Build();
            });

            services.AddControllers();
        }
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();
            app.UseRouting();

            app.UseAuthentication();
            app.UseAuthorization();

            app.Use(async (context, next) =>
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Write("Auth Info: ");
                Console.ResetColor();
                Console.WriteLine(context.User.Identity.IsAuthenticated ? "Logged In" : "Anon");

                await next();
            });

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            app.UseServiceStack(new AppHost
            {
                AppSettings = new NetCoreAppSettings(Configuration)
            });
        }
    }

Затем я добавил servicestack и могу получить доступ к конечным точкам анонимно.

Наконец, я добавил NetCoreIdentityAuthProvider, чтобы связать servicestack с идентификатором .netcore.

        Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                new IAuthProvider[] { new NetCoreIdentityAuthProvider(AppSettings) { }}));
  • С атрибутом Microsoft.AspNetCore.Authorization [Authorize()] я просто получаю анонимный вызов.
  • С атрибутом ServiceStack [Authenticate()] меня перенаправляют на Account/Login?ReturnUrl=%2f

Я ожидал что я могу использовать базовую аутентификацию as pnet и комбинировать ее со стеком служб. Разве это не так?

1 Ответ

0 голосов
/ 16 июня 2020

См. Using ASP. NET Identity Auth in ServiceStack docs для получения информации об использовании ASP. NET Identify Auth with ServiceStack.

Убедитесь, что вы начните с шаблона проекта mvcidentity для начальной хорошо известной конфигурации с примерами Auth для разных конечных точек.

...