1、经过元旦两天的全力整改,终于在这新的一年,完成了我的布道生涯的第一个大步走 —— 那就是客户端(VUE)、服务端(ASP.NET Core API)、授权中心(IdentityServer4)的大融合,不仅有文档也有代码,更重要的是实战。

2、这一大步里边当然也有很多小步骤,知识点就不说了,过去的文章里都有。

3、具体的代码和效果呢,我会在下边给大家先简单的说明一下,今天的目的主要是第一篇,概述下,里边的小知识点或者注意事项,其实主要还是Ids4的内容,我还是会慢慢的在以后的文章或者视频中,给大家讲解的。

因为微信公众号不能多次修改文章内容,所以我如果有更新内容,会重点在博客园也发布几篇文章,公众号只是作为一个消息的发布,点击阅读原文,查看博客园文章。

那下边我就简单的说说效果吧,大家也可以自行体验一下:

http://vueadmin.neters.club

(支持滑动更新等基本操作,后期增加单点登录)

Blog.Admin 客户端

Admin项目,是基于Vue+Ele开发的一套后端权限框架,是我自主研发的,里边主要是用到了动态数据库授权认证,使用JWT的复杂策略授权技术,精确到按钮基本,目前部门数据权限还在设计当中,以后也会附加上,这是内部授权这一块,但是认证想做一个统一认证中心,所以就想到了IdentityServer4了。

Vue项目和其他的SPA项目是一样的,连接IdentityServer4认证中心,主要是通过oidc-client这个插件来处理的,

npm install oidc-client --save

用法其实很简单,我简单说下思路,具体的看我的代码,或者看官网都可以:

 class ApplicationUserManager extends UserManager {constructor () {super({authority: 'http://ids.neters.club',client_id: 'blogadminjs',redirect_uri: 'http://vueadmin.neters.club/callback',response_type: 'id_token token',scope: 'openid profile roles blog.core.api',post_logout_redirect_uri: 'http://vueadmin.neters.club'})}

这个是核心方法,目的是通过配置,实现用户管理,比如登录,跳转,回调,获取用户信息,令牌token,刷新等等,当然以后可能会配合单点登录做处理。

  methods: {async refreshUserInfo() {const user = await applicationUserManager.getUser();if (user) {this.user.name = user.profile.name;this.user.isAuthenticated = true;} else {this.user.name = "";this.user.isAuthenticated = false;}}}

这个是使用上边的UserManager来处理远程获取到的用户数据。

具体的代码我已经放到了Blog.Admin项目的ids4分支下了:

Blog.Core 资源服务端

这个项目想必都知道了,不多说什么,其实你的任意一个后端服务项目都可以,只要做个表结构,然后配置Identityserver4的认证即可。

//2.2【认证】、IdentityServer4 认证 (暂时忽略)
services.AddAuthentication("Bearer").AddIdentityServerAuthentication(options =>{options.Authority = "http://ids.neters.club";options.RequireHttpsMetadata = false;options.ApiName = "blog.core.api";});

这个就是一个核心的代码,将我们BlogCore的资源服务器认证方式,从JWT改成Ids4认证。

修改完认证方式以后,下边就是简单的对其中几个小知识点进行微调了,比如某些Claim声明字段,我用的和Ids4不太一样,所以就简单微调一下,主要的修改内容,我也新建了一个分支,可以自行查看下,修改的地方不多。

Blog.Idp 认证授权中心

这个才是整个项目的重头戏,项目的重中之重,不过配置起来也不难,具体的操作和使用,我也在录视频和写文章,其实只要了解这几个知识点,就基本学会了Ids4了:

1、如何引用指定的nuget包;

2、JWT、OpenID、OAuth2、OCID 四者的关系和内容;

3、常见的四种授权方式:简化、混合、密码、客户端等要明白场景,会用;

4、学会联调;

具体的就不多说了,不是今天的讲解内容。今天主要点一下部署的时候的几个知识点,其他的看我的代码即可,这次是master分支。

// 使用证书,可以直接使用开发证书
builder.AddDeveloperSigningCredential();// 或者自己配置
.AddDeveloperSigningCredential(true, ConstanceHelper.AppSettings.CredentialFileName)
.AddSigningCredential(new X509Certificate2(Path.Combine(Environment.WebRootPath,Configuration["Certificates:Path"]),Configuration["Certificates:Password"]))

证书这个很重要,当然既然是安全,就要好好处理,可以配合的证书,继续搞搞HTTPS安全协议,未来还是很多要处理的。

 new Client {ClientId = "blogadminjs",ClientName = "Blog.Admin JavaScript Client",AllowedGrantTypes = GrantTypes.Implicit,AllowAccessTokensViaBrowser = true,RedirectUris =           { "http://vueadmin.neters.club/callback" },PostLogoutRedirectUris = { "http://vueadmin.neters.club" },AllowedCorsOrigins =     { "http://vueadmin.neters.club" },AllowedScopes = {IdentityServerConstants.StandardScopes.OpenId,IdentityServerConstants.StandardScopes.Profile,"roles","blog.core.api"}}

这是另一个重点,必须要配置客户端,不仅是数据生成到数据库,更是在授权的时候,起到安全的作用。

最后一个小问题,确定是我自己的问题,就是部署的时候,我本来用的Nginx进行代理,但是配置文件里,却依然是localhost:

这样就导致了一个问题,虽然我的认证中心项目可以正常的跑,我是说服务器生产环境,但是用客户端去登录的时候,会自动跑到locaohost里,毕竟配置文件是这样的。

网上找了很多资料,都是本地教程,部署的都很少,我也是很方,最后我找到了官方的一个在线demo项目,它是正常的,我仔细研究了下代码,代码和我的没啥区别,最后灵机一动,我看了看他们的服务器,是IIS!我赶紧实验了一番,还真的是正常了:

但是这个不科学呀,这个我要承认下,肯定是我学艺不精,Nginx肯定是可行的,但是我没有找到为何去配置,这个时候应该查看官网的,当我继续在寻找的时候,但是正好有一个小伙伴的小伙伴告诉了我,贼简单,这个故事告诉我们,学习知识要从细节着手,不能知其然而不知其所以然。

 var builder = services.AddIdentityServer(options =>{options.Events.RaiseErrorEvents = true;options.Events.RaiseInformationEvents = true;options.Events.RaiseFailureEvents = true;options.Events.RaiseSuccessEvents = true;options.IssuerUri = "http://ids.neters.club";// 就是这里options.PublicOrigin = "http://ids.neters.club";})

结果还是正确的,看来还是要多读文档,当然如果实在是绕不过来,也可以先求助。

就这样,元旦一整天就过去了,项目也终于放上去了,当然还有很多要优化的,既然开始了,便只顾风雨兼程了。

下一步 2020

今年开始,一切都是新的,第一个闭环已经完成了,当然还有很多需要优化,比如单点登录,DDD和Blog项目也迁移到Ids4上来,那下一个就开始了 —— CI/CD DevOps 我来了。

????:点击阅读原文,博客园内容可能稍有不同,后期补充。

【实战 Ids4】║ 客户端、服务端、授权中心全线打通!相关推荐

  1. 《Delphi传奇》研究系列文章1:服务端控制中心(服务器网关启动器)

    提示:所有的研究心得直接写在源码注释中,对照源码看注释即可学习了解传奇的流程架构.<Delphi传奇>全部源码获取可加入Delphi开发局QQ群:32422310 <Delphi传奇 ...

  2. android校园二手市场客户端+服务端源代码

    前语 最近在做学科期末设计,就想做一个校园二手市场(有JSP服务端),就在网上找了好多的资料,终于做完了,快吐血了(噗噗)不说废话,把效果图粘一下. 效果图 主界面 商品浏览 上传商品 查看留言界面 ...

  3. OSI七层模型以及TCP/UDP客户端/服务端程序实例

    OSI七层模型以及TCP/UDP客户端/服务端程序实例 一.前言 二.OSI简介 2.1 OSI概念 2.2 划分原则 2.3 OSI七层模型 2.4 模型举例 三.Linux下TCP/UDP程序开发 ...

  4. plsq卸载 删除注册表、_win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结...

    win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结 一:前提 注意:现在有两种安装的方式 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(3 ...

  5. 程序猿必须要知道的一个内容:客户端+服务端二(源码解析、建议收藏)

    客户端+服务端2(提升) 需先执行服务端,再执行客户端 package reflect;import java.io.File; import java.io.FileOutputStream; im ...

  6. 程序猿必须要知道的一个内容:客户端+服务端一(源码解析、建议收藏)

    客户端+服务端1(提升) 需要先开启服务端在开启客户端 package reflect;import java.io.ByteArrayOutputStream; import java.io.IOE ...

  7. java xmpp协议_GitHub - zhengzhi530/xmpp: 基于Xmpp协议的即时通讯社交软件(客户端+服务端)...

    yyquan 开源一个自己去年写的基于Xmpp协议的即时通讯社交软件 (客户端+服务端) 本项目仅供参考,对于正在学习Xmpp以及javaweb后台的同学,可以看一下. 做这个项目纯属个人兴趣爱好,所 ...

  8. 草帽船长(梦想海贼王)全套源码:客户端+服务端+资源+文档

    草帽船长(梦想海贼王)全套源码:客户端+服务端+资源+文档 ,需要帮助搭建联系QQ 2805477110 下载地址:http://www.51xyyx.com/2705.html 梦想海贼王全套源码, ...

  9. Node.js联机游戏——gobang五子棋(客户端+服务端+websocket的双人游戏)

    Node.js联机游戏--gobang五子棋(客户端+服务端+websocket的双人游戏) 五子棋的基本结构 ~·基本画图 ~·判断机制 ~···横向/竖向判断 ~···斜向判断 搭建服务器阶段 ~ ...

最新文章

  1. 仿写strncmp函数
  2. 《爱上统计学》读书笔记
  3. 今日arXiv精选 | 9篇ICCV 2021最新论文
  4. python pandas dataframe 转json_python将相类不同key的json对象转化为pandas的dataframe(上篇)...
  5. Qt Creator IDE概述
  6. hibernate 序列_Hibernate身份,序列和表(序列)生成器
  7. 使用webpack打包后的vue项目如何运行(express)
  8. 点击图片,AJAX删除后台图片文件
  9. Linux内存管理:为什么 Linux 需要虚拟内存?为什么 Linux 默认页大小是 4KB?
  10. python爬虫加强版!!!!想爬哪个队伍就爬那个
  11. Alameda:最初同意对Reef投资8000万美元,但支付2000万美元后Reef拒绝了随后的交易
  12. Scala 入门学习
  13. java实验报告大全
  14. AI: 2021 年人工智能前沿科技报告(更新中……)
  15. 视频剪辑入门技能快速分享
  16. [原创]分布光纤测温DTS产品在市场上两种主流产品架构的区别与对比-未来趋势必然向单板化方向发展
  17. 拉普拉斯(Laplace)变换——自控笔记系列(一)
  18. SpringBoot项目中遇到的问题
  19. 没有人能随随便便成功,但没有必要活得像尘埃一样卑微
  20. 首个直播商城,拼团商城,小程序商城的微服务分布式框架,前后端分离

热门文章

  1. MySQL知识总结(二)基本语句总结
  2. httpModules 与 httpHandlers
  3. QM课程02-外部功能
  4. Android 使用XmlPullParser解析xml
  5. [导入]ASP.NET中上传并读取Excel文件数据
  6. 使用Azure轻松实现Teams App的全球合规性
  7. 如何在线查找成千上万的免费电子书
  8. Javascript中的循环变量声明,到底应该放在哪儿?
  9. java dateTime + long
  10. 【数据库中间件】MyCat分表分库规则实现