У меня возникает проблема, когда я пытаюсь разместить реализацию IdentityServer4 на сервере IIS, который использует SSL. (Полный SSL строгий)
При запуске моего приложения только на Kestrel с активированным SSL оно работает нормально, а IssuerUri
и Discovery Endpoints
для IdentityServer используют привязку SSL. Однако, когда я размещаю его за модулем ASP.NET Core, он размещает его на http://localhost:{random port}
, который, в свою очередь, генерирует IssuerUri
и Endpoints
для Identityserver, которые не являются https.
Я безуспешно пробовал следующее:
Убедился, что у меня есть действующий сертификат на веб-сайте IIS для привязки https, и удалил привязку к порту 80.
Пытался изменить переменную среды
ASPNETCORE_URLS
в web.config, чтобы она указывала на адрес https.Пробовал переписывать и перенаправлять правила в web.config.
Искал настройки на
IISOptions
(используется.UseIISIntegration()
) в моем классе запуска для привязки к определенному URL-адресу или изменения протокола.Пытался найти похожие настройки типа
RequireSSL
(IdentityServer 3) илиRequireHttpsMetadata
в IdentityServer4.Изменил
IssuerUri
в параметрах IdentityServer в классе запуска, надеясь, что он также может обновить другие конечные точки.
Я, вероятно, пропустил что-то очень очевидное, но сейчас я не имею ни малейшего представления о том, что это могло быть.
Любая помощь от сообщества будет принята с благодарностью :-)
Код 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();
}