捣鼓了几天,终于部署起来了,效果如下.
源代码来源:https://github.com/skoruba/IdentityServer4.Admin
主要难点:
1,证书的生成和配置。
2,秘钥的配置。
3,IIS服务器读取证书问题。
下面进入正题
下载完代码,在本地跑是基本上没有太多问题,源代码会自动在本地生成证书,但是这个证书无法在服务器上面使用,只能用于测试环境,所以部署的第一步是先生成证书,采用OpenSSL工具 ,OpenSSL工具使用网上很多教程.
证书生成教程:https://www.cnblogs.com/chenyishi/p/10922326.html
唯独需要注意的是,"颁发给"需要是域名或者IP地址,需要和服务器地址保持一致,否则无法使用,我的服务器是内网服务器没有域名,如果有域名则采用域名,没有则使用IP。
证书生成好后,需要架设3个网站,分别是:Admin,Api,identityServer
然后将生成证书的3个文件(.cer,.key,pfx)放入到服务器identityServer网站根目录,放好后再进入appsettings.json进行配置,配置如下
下一步,3个网站都分别启动HTTPS,需要安装IIS证书模块,安装好了使用证书模块导入,
进入证书模块导入,选择生成好的证书.pfx后缀的文件导入,并且输入生成时候的密码,导入后到具体网站启动HTTPS选择导入的证书
服务器证书如果有信任问题则进入MMC证书管理,导入到受信任证书,这个配置似乎不一定需要。
然后进入应用池,配置加载用户配置为:true,这个非常重要!!!,不然直接报错
客户端秘钥生成:选择SharedSecret,哈希类型Sha256
一般没有部署好是无法进入管理端,不过本地生成好,然后导入到服务器数据库
配置在Admin项目的配置文件里面,这里不一定需要配置,如果采用初始项目配置,则不需要改变,我是因为采用了新的客户端
到这里重点的配置基本上弄完了,大功告成,登录后应该是可以成功,当然很多细节配置需要自己去处理下,不是很难.
其他一些错误说明:
上面错误基本上是证书没有加载正确,检查是否有配置,加载用户配置为:true
出现:“invalid_client”基本上是秘钥不正确,请检查。
未解决问题关于http连接https在谷歌浏览器跨域问题(edge没有问题),问题如下:
解决中.......
已解决,登录后台配置API跨域即可,