Проблема заключается в том, что я пытаюсь организовать реализацию IdentityServer4 на сервере IIS с использованием SSL. (Full SSL Strict)Настройка основного модуля ASP.NET для хоста на https вместо http для IdentityServer 4
При запуске моей заявки на Kestrel в одиночку с активированным SSL это работает нормально, а IssuerUri
и Discovery Endpoints
для IdentityServer использует привязку SSL. Однако, когда я размещаю его за базовым модулем ASP.NET, он размещает его на http://localhost:{random port}
, который, в свою очередь, генерирует IssuerUri
и Endpoints
для Identityserver, которые не являются https.
Я попытался следующие без успеха:
Сделано уверен, что у меня есть действующий сертификат на веб-сайте IIS для HTTPS связывания и удаленного связывания на порт 80
попытался изменить environmentvariable
ASPNETCORE_URLS
в web.config , чтобы указать адрес https.Пробные правила перезаписи и переадресации в web.config.
Искал настройки на
IISOptions
(используется.UseIISIntegration()
) в моем классе запуска для привязки к определенному URL-адресу или изменения протокола.Пытался найти аналогичные параметры, как
RequireSSL
(IdentityServer 3) илиRequireHttpsMetadata
в IdentityServer4.Изменен
IssuerUri
в IdentityServer Options в классе запуска , надеясь, что он может также обновить другие конечные точки.
Я, вероятно, пропустил что-то очень очевидное, но прямо сейчас я не знаю, что это может быть.
Любая помощь со стороны сообщества было бы весьма признателен :-)
Program.cs код
public static void Main(string[] args)
{
Console.Title = "IdentityServer";
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("kestrelHosting.json", optional: true)
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel(options =>
{
// options.ThreadCount = 4;
options.NoDelay = true;
options.UseHttps("VismaCert.pfx", "Visma123");
//options.UseConnectionLogging();
})
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Можете ли вы показать свои х-переправленные * заголовки? – Tratcher
Спасибо @Tratcher за ваш ответ. После того, как вы перешли по ссылкам и добавили заголовки ответов в ARR, я теперь получаю следующее. «X-FORWARDED-HOST: xxxxxxxx.xxx.xxx», «X-FORWARDED-SCHEMA: https», «X-FORWARDED-PROTO: https, http» и «X-Forwarded-For: xx.xx.x.xx : хххххх». К сожалению, похоже, что identserver не подбирает эти изменения, а вместо этого считывает HttpContext.Request.Schema вместо проверки запроса.Заголовка ["X-Forwarded-Proto"] со значением https была установлена для BaseUrlMiddleware, поэтому я рассмотрю новый вопрос о том, как лучше всего продолжить. –
При отключении опций пересылаемых заголовков требуется симметрия заголовка. У вашего proto и For есть другое количество значений. – Tratcher