【发布时间】:2017-06-26 16:56:05
【问题描述】:
我遇到的问题是当我尝试在使用 SSL 的 IIS 服务器上托管 IdentityServer4 的实现时。 (完全 SSL 严格)
在激活 SSL 的情况下单独在 Kestrel 上运行我的应用程序时,它可以正常工作,并且 IdentityServer 的 IssuerUri 和 Discovery Endpoints 使用 SSL 绑定。但是,当我将它托管在 ASP.NET Core 模块后面时,它会将其托管在 http://localhost:{random port} 上,这反过来又会为非 https 的 Identityserver 生成 IssuerUri 和 Endpoints。
我尝试了以下方法但没有成功:
确保我在 IIS 网站上有一个有效的证书 端口 80 上的 https 绑定和删除绑定
尝试在 web.config 中更改环境变量
ASPNETCORE_URLS指向一个 https 地址。尝试在 web.config 中重写和重定向规则。
在
IISOptions上查找设置(由.UseIISIntegration()使用) 在我的启动类中绑定到特定的 url 或更改协议。试图找到类似的设置,如
RequireSSL(IdentityServer 3) 或RequireHttpsMetadata在 IdentityServer4 中。在启动类的 IdentityServer 选项中更改了
IssuerUri希望它也可以更新其他端点。
我可能错过了一些非常明显的东西,但现在我不知道那可能是什么。
非常感谢社区提供的任何帮助 :-)
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();
}
【问题讨论】:
标签: iis asp.net-core identityserver4