关于必须使用HTTPS这个问题,不少朋友都在群里问到了,不过因为这个问题很简单,一直也没经过文章的方式记录下来,今日有时间,便说说它的来龙去脉吧,给须要的人解惑~。git
本文所使用代码为 IdentityServer4 的 QuickStart2 的源代码,文末会给出下载地址github
该项目默认监听 localhost ,咱们须要改变,让咱们经过局域网IP也能访问(后文解释)。打开 launchSettings.json
修改 applicationUrl
,以下图:json
而后启动 QuickstartIdentityServer,出现下图所示则表示修改正确 :api
打开浏览器,经过局域网ip(个人局域网ip是:192.168.0.102)访问,确保咱们能成功访问。浏览器
首先将该项目访问 Ids4 的地址改成局域网地址:app
而后启动,能够看到报错了,提示必须使用 HTTPS。ide
关于
/.well-known/openid-configuration
这个地址这里简单提一下,这个是 OpenIdConnect 协议中定义的一个 EndPoint 用于获取,其余 EndPoint 等信息。ui
下面咱们介绍如何来解决。3d
咱们修改一下 ResourceOwnerClient 项目的代码:code
主要是这句代码
var discoveryClient = new DiscoveryClient(ids4Url) {Policy = {RequireHttps = false}};
咱们经过设置 RequireHttps 属性为 false 来关闭对 Ids4 地址HTTS的验证。
必须使用HTTPS这个问题,不少人都是部署到生产环境才发生的,由于生产环境不少状况下不会用 localhost
做为 IdentityServer4(后文简称 Ids4) 的地址,这个问题并非 Ids4 引发的,而是咱们使用的 IdentityModel
这个组件引发的,它默认限制了当 Ids4 非 localhost
地址时,必须启用HTTPS。
项目所用代码:https://github.com/stulzq/IdentityServer4.Samples/tree/master/Practice/04_HTTPS