Identity Server 4 Кнопка входа в систему проверки подлинности Windows не отображается с локальным IIS - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь настроить проект Identity Server с проверкой подлинности oidc и windows.

Проверка подлинности Windows почему-то не работает. Я следовал учебному пособию по умолчанию и начал с шаблонов по умолчанию, в локальном IIS я не получаю окна в качестве схемы проверки подлинности, поэтому кнопка входа в систему Windows не отображается.

Я прочитал несколько возможных решений, но ни одно из них не работает, возможно, я просто упускаю одну простую вещь.

Я также хочу настроить его в своем локальном IIS (если я переключаюсь на IISExpress, я вижу кнопку входа в систему).

В данный момент у меня при запуске есть следующее:

 public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            //.UseUrls("http://localhost:5000")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

Настройка служб:

public void ConfigureServices(IServiceCollection services)
    {
        string connectionString = Configuration.GetConnectionString("PostgreSQLConnection");
        var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;

        JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseNpgsql(connectionString));

        services.AddIdentity<ApplicationUser, IdentityRole>()                 
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

        services.AddTransient<IEmailSender, EmailSender>();

        services.AddMvc();

        services
            .AddIdentityServer()
            .AddDeveloperSigningCredential()
            .AddInMemoryPersistedGrants()
            .AddInMemoryIdentityResources(Config.GetIdentityResources())
            .AddInMemoryApiResources(Config.GetApiResources())
            .AddInMemoryClients(Config.GetClients())
            .AddAspNetIdentity<ApplicationUser>();

        services.Configure<IISOptions>(options => {
            options.AuthenticationDisplayName = "Windows";
            options.AutomaticAuthentication = true;
        });

        services.AddScoped<IUserClaimsPrincipalFactory<ApplicationUser>, GeoItClaimsPrincipal>(); 

    }

Настройка

 if (env.IsDevelopment())
        {
            app.UseBrowserLink();
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }

        app.UseStaticFiles();
        app.UseAuthentication();
        app.UseIdentityServer();
        app.UseMvcWithDefaultRoute();

В моих файлах launchSettings.json и IIS для обоих атрибутов windowsAuthentication и anonymousAuthentication установлено значение true.

У меня также возникают проблемы с пониманием документов, в которых говорится, что вам нужно установить отображаемое имя, если вы полагаетесь на автоматическое обнаружение внешних поставщиков. и что по умолчанию отображаемое имя пустое, и вы должны запустить «позади» IIS и использовать интеграцию IIS.

Простой пример был бы полезен, я не знаю, что я делаю неправильно.

Заранее спасибо.

...