十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇文章给大家分享的是有关ABP VNext实践中如何搭建可用于生产的IdentityServer4,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
成都创新互联公司服务项目包括建始网站建设、建始网站制作、建始网页制作以及建始网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,建始网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到建始省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
一、前言
今天给大家讲讲如何在利用abp vnext框架搭建IDS4且可以在生产环境下使用的,其中也需要针对于IDS4在liunx系统使用nginx代理中端点不是https的特别注意事项配置,这个也是一个坑,如果不注意,授权就不成功,除非配置了跳过https的强制验证;
CLI 命令大家可以参考wiki,命令如下:abp new Louie.Ids4Demo --ui none --separate-identity-server,其中 --separate-identity-server代表将IdentityServer应用程序与API host应用程序分开,--ui none 无UI;打开命令窗口,拷贝进去后就可以生成一个解决方案;
然后我们授权需要修改一下项目中的代码迁移配置,因为我这边用的是MySQL,而命令生成的是使用sqlserver,在 Louie.Ids4Demo.EntityFrameworkCore中把SQLServer改成Mysql nuget包,并且在DbMigrations类库中删除Migrations文件夹,然后修改DbContextFactory.cs里面的配置;截图如下:
1、Louie.Ids4Demo.EntityFrameworkCore 类库,去掉sqlserver包,添加mysql包
打开 Ids4DemoEntityFrameworkCoreModule 修改模块注入和命名空间
2、Louie.Ids4Demo.EntityFrameworkCore.DbMigrations 类库,删除Migrations文件
并且修改Ids4DemoMigrationsDbContextFactory.cs文件中的链接配置
3、在Louie.Ids4Demo.IdentityServer 主程序中 appsetting.json 添加数据库连接字符串
4、然后使用迁移命令,生成对应的数据库表
5、打开Louie.Ids4Demo.IdentityServer 主程序,打开Ids4DemoIdentityServerModule.cs 类
在里面配置自定义的RSA非对称加密证书,并且禁止在开发环境下由系统生成的临时证书,我们需要使用重写PreConfigureServices来替换框架默认的配置
当然证书是我自己生成的,大家可以自行生成,把生成好的证书放在主程序的目录下,然后再appsetting.json 中配置一下
上面配置中有涉及到AddResourceOwnerValidator主要是用到密码模式下的自定义验证逻辑以及添加声明,如果大家不需要则可以不用配置,直接注释;AddProfileService 主要是是声明claims需要和库表中定义的申明一致,否则无法显示,这个也是一个安全校验的方式。
配置完后启动打开浏览器,并且启动的url后缀添加 .well-known/openid-configuration,如果可以查看到端点则代表配置成功。
6、问题来了,在我们的IDS4部署到docker上后,发现查看的端点不是https的,我们需要在OnApplicationInitialization 方法中配置一个特殊代码
当然大家也可以看一下一个解决方案的issue:https://github.com/dotnet/AspNetCore.Docs/issues/2384
主要原因是使用的反向代理导致域名是https的,但是端点无法映射https;插入以下代码即可
大家在部署到生产线后就可以看到端点已经是https了
以上就是ABP VNext实践中如何搭建可用于生产的IdentityServer4,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。