我正在我们基于 MVC 的网站之一上实现单点登录(使用 OKTA),一旦用户在 OKTA 登录页面上输入其凭据,OKTA 就会采用响应 URL 将其响应返回到我的代码
OKTA 采用基于 HTTPS 的响应 URL 来抛出其响应。
我做过的事情:
1) 我使用 etc/hosts 文件为我的计算机指定了一个虚拟主机名,例如:
127.0.0.1www.abc.com
2) 在我的本地计算机上的 www.abc.com 上启用 https://
3) 在我的代码中指定路由 {{controller}}/{{Action}} 来接收响应。
4)我尝试指定绑定(bind)到我的本地 applicationConf 文件:
<bindings>
<binding protocol="http" bindingInformation="*:58565:localhost" />
<binding protocol="https" bindingInformation="*:443:www.abc.com" />
</bindings>
我的 VS 项目配置如下所示:
当 URL(OKTA 抛出响应的地方)类似于 https://www.abc.com/Home/Auth 时,是否可以在本地 MVC 路由上接收响应(命中断点) p>
问题是当我写 localhost:58565/Home/Index或 http://www.abc.com/Home/Index时打开 VS 调试后,它会命中断点,但当我输入 https://www.abc.com/Home/Index(使用 https)时,它不会命中断点在 Visual Studio 中。使用 https 时,会显示 404 未找到。
我错过了什么吗?
谢谢
最佳答案
我已经解决了这个问题。发布解决方案,以便对其他人有所帮助。
我遵循的步骤:
1) 使用 Powershell 创建自签名证书(确保使用管理员权限运行 Powershell 命令行)
New-SelfSignedCertificate -DnsName www.mydomain.com -CertStoreLocation cert:\LocalMachine\My
2) 在我的 ApplicationConf.host 文件中具有正确的绑定(bind)(自 VS 2015 以来,该文件现在处于项目级别,而不是 IIS 级别) 就像下面这个:
<bindings>
<binding protocol="http" bindingInformation="*:58565:localhost" />
<binding protocol="https" bindingInformation="*:44311:localhost" />
</bindings>
如果使用主机名而不是本地主机,您可以添加更多绑定(bind)。确保每个绑定(bind)的端口都不同。此外,Https 端口应从 443 开始 - 到 44399 结束。
3) 从 IIS 默认网站中删除现有的 https 绑定(bind),并使用步骤 1 中创建的证书和步骤 1 中使用的正确主机名将其添加回来。
现在您应该能够使用自签名 SSL 在本地计算机上运行和调试代码。
关于asp.net-mvc - 如何在 IIS 中使用带有 https 的域名而不是 localhost 来调试网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45389829/