Я пытаюсь настроить проект 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.
Простой пример был бы полезен, я не знаю, что я делаю неправильно.
Заранее спасибо.