当前位置: 首页 > news >正文

买源码做网站淄博网站建设培训

买源码做网站,淄博网站建设培训,网站登录密码忘记,厦门有设计网站的吗上篇文章我介绍了如何在网关上实现客户端自定义限流功能#xff0c;基本完成了关于网关的一些自定义扩展需求#xff0c;后面几篇将介绍基于IdentityServer4#xff08;后面简称Ids4#xff09;的认证相关知识#xff0c;在具体介绍ids4实现我们统一认证的相关功能前… 上篇文章我介绍了如何在网关上实现客户端自定义限流功能基本完成了关于网关的一些自定义扩展需求后面几篇将介绍基于IdentityServer4后面简称Ids4的认证相关知识在具体介绍ids4实现我们统一认证的相关功能前我们首先需要分析下Ids4源码便于我们彻底掌握认证的原理以及后续的扩展需求。.netcore项目实战交流群637326624有兴趣的朋友可以在群里交流讨论。一、Ids4文档及源码文档地址 http://docs.identityserver.io/en/latest/Github源码地址 https://github.com/IdentityServer/IdentityServer4二、源码整体分析【工欲善其事,必先利其器,器欲尽其能,必先得其法】在我们使用Ids4前我们需要了解它的运行原理和实现方式这样实际生产环境中才能安心使用即使遇到问题也可以很快解决如需要对认证进行扩展也可自行编码实现。源码分析第一步就是要找到Ids4的中间件是如何运行的所以需要定位到中间价应用位置app.UseIdentityServer();查看到详细的代码如下。通过上面的源码我们知道整体流程分为这5步实现。接着我们分析下每一步都做了哪些操作呢1、app.Validate()为我们做了哪些工作校验IPersistedGrantStore、IClientStore、IResourceStore是否已经注入验证IdentityServerOptions配置信息是否都配置完整输出调试相关信息提醒详细的实现代码如上所以非常清晰明了这时候有人肯定会问这些相关的信息时从哪来的呢这块我们会在后面讲解。2、BaseUrlMiddleware中间件实现了什么功能源码如下,就是从配置信息里校验是否设置了PublicOrigin原始实例地址如果设置了修改下请求的Scheme和Host最后设置IdentityServerBasePath地址信息然后把请求转到下一个路由。这里源码非常简单就是设置了后期要处理的一些关于请求地址信息。那这个中间件有什么作用呢就是设置认证的通用地址当我们访问认证服务配置地址http://localhost:5000/.well-known/openid-configuration的时候您会发现您设置的PublicOrigin会自定应用到所有的配置信息前缀比如设置option.PublicOrigin http://www.baidu.com;显示的json代码如下。可能还有些朋友觉得奇怪这有什么用啊其实不然试想下如果您部署的认证服务器是由多台组成那么可以设置这个地址为负载均衡地址这样访问每台认证服务器的配置信息返回的负载均衡的地址而负载均衡真正路由到的地址是内网地址每一个实例内网地址都不一样这样就可以负载生效后续的文章会介绍配合Consul实现自动的服务发现和注册达到动态扩展认证节点功能。可能表述的不太清楚可以先试着理解下因为后续篇幅有介绍负载均衡案例会讲到实际应用。3、app.ConfigureCors(); 做了什么操作其实这个从字面意思就可以看出来是配置跨域访问的中间件源码就是应用配置的跨域策略。很简单吧至于什么是跨域可自行查阅相关文档由于篇幅有效这里不详细解释。4、app.UseAuthentication();做了什么操作就是启用了默认的认证中间件然后在相关的控制器增加[Authorize]属性标记即可完成认证操作由于本篇是介绍的Ids4的源码所以关于非Ids4部分后续有需求再详细介绍实现原理。5、IdentityServerMiddleware中间件做了什么操作这也是Ids4的核心中间件通过源码分析哎呀好简单啊我要一口气写100个牛逼中间件。哈哈我当时也是这么想的难道真的这么简单吗接着往下分析让我们彻底明白Ids4是怎么运行的。第一步从本地提取授权记录就是如果之前授权过直接提取授权到请求上下文。说起来是一句话但是实现起来还是比较多步骤的我简单描述下整个流程如下。1、执行授权如果发现本地未授权时获取对应的授权处理器然后执行授权看是否授权成功如果授权成功赋值相关的信息常见的应用就是自动登录的实现。比如用户U访问A系统信息自动跳转到S认证系统进行认证认证后调回A系统正常访问这时候如果用户U访问B系统B系统也是S统一认证的B系统会自动跳转到S认证系统进行认证比如跳转到/login页面这时候通过检测发现用户U已经经过认证可以直接提取认证的所有信息然后跳转到系统B实现了自动登录过程。获取路由处理器其实这个功能就是拦截请求获取对应的请求的处理器那它是如何实现的呢IEndpointRouter是这个接口专门负责处理的那这个方法的实现方式是什么呢可以右键-转到实现我们可以找到EndpointRouter方法详细代码如下。源码功能我做了简单的讲解发现就是提取对应路由处理器然后转换成IEndpointHandler接口所有的处理器都会实现这个接口。但是IEnumerableEndpoint记录是从哪里来的呢而且为什么可以获取到指定的处理器可以查看如下代码,原来都注入到默认的路由处理方法里。通过现在分析我们知道了路由查找方法的原理了以后我们想增加自定义的拦截器也知道从哪里下手了。执行路由过程并返回结果有了这些基础知识后就可以很好的理解var result await endpoint.ProcessAsync(context);这句话了其实业务逻辑还是在自己的处理器里但是可以通过调用接口方法实现是不是非常优雅呢为了更进一步理解我们就上面列出的路由发现地址http://localhost:5000/.well-known/openid-configuration为例讲解下运行过程。通过注入方法可以发现路由发现的处理器如下所示。可以请求的地址会被拦截然后进行处理。它的详细代码如下跟分析的一样是实现了IEndpointHandler接口。通过上面代码说明可以发现通过4步完成了整个解析过程然后输出最终结果终止管道继续往下进行。路由发现的具体实现代码如下就是把结果转换成Json格式输出然后就得到了我们想要的结果。到此完整的路由发现功能及实现了其实这个实现比较简单因为没有涉及太多其他关联的东西像获取Token和就相对复杂一点然后分析方式一样。6、继续运行下一个中间件有了上面的分析我们可以知道整个授权的流程所有在我们使用Ids4时需要注意中间件的执行顺序针对需要授权后才能继续操作的中间件需要放到Ids4中间件后面。三、获取Token执行分析为什么把这块单独列出来呢因为后续很多扩展和应用都是基础Token获取的流程所以有必要单独把这块拿出来进行讲解。有了前面整体的分析现在应该直接这块源码是从哪里看了没错就是下面这句。 builder.AddEndpointTokenEndpoint(EndpointNames.Token, ProtocolRoutePaths.Token.EnsureLeadingSlash());他的执行过程是TokenEndpoint所以我们重点来分析下这个是怎么实现这么复杂的获取Token过程的首先放源码。执行步骤如下验证是否为Post请求且使用form-data方式传递参数直接看代码即可验证客户端授权详细的验证流程代码和说明如下。ClientSecretValidator.cs验证请求的信息是否有误由于代码太多只列出TokenRequestValidator.cs部分核心代码如下1、创建生成的结果TokenResponseGenerator.cs根据不同的认证方式执行不同的创建方法由于篇幅有限每一个是如何创建的可以自行查看源码。1、写入日志记录为了调试方便把生成的token相关结果写入到日志里。2、输出最终结果把整个执行后的结果进行输出这样就完成了整个验证过程。四、总结通过前面的分析我们基本掌握的Ids4整体的运行流程和具体一个认证请求的流程由于源码太多就未展开详细的分析每一步的实现具体的实现细节我会在后续Ids4相关章节中针对每一项的实现进行讲解本篇基本都是全局性的东西也在讲解了了解到了客户端的认证方式但是只是介绍了接口至于接口如何实现没有讲解下一篇我们将介绍Ids4实现自定义的存储并使用dapper替换EFCore实现与数据库的交互流程减少不必要的请求开销。对于本篇源码解析还有不理解的可以进入QQ群637326624进行讨论。相关文章AspNetCore中使用Ocelot之 IdentityServer4Ocelot-基于.NET Core的开源网关实现.NET Core微服务之基于OcelotIdentityServer实现统一验证与授权Swagger如何访问Ocelot中带权限验证的APIOcelot.JwtAuthorize一个基于网关的Jwt验证包.NET Core微服务之基于Ocelot实现API网关服务.NET Core微服务之基于Ocelot实现API网关服务续.NET微服务体系结构中为什么使用Ocelot实现API网关Ocelot简易教程一之Ocelot是什么Ocelot简易教程二之快速开始1Ocelot简易教程二之快速开始2Ocelot简易教程三之主要特性及路由详解Ocelot简易教程四之请求聚合以及服务发现Ocelot简易教程五之集成IdentityServer认证以及授权Ocelot简易教程六之重写配置文件存储方式并优化响应数据Ocelot简易教程七之配置文件数据库存储插件源码解析ASP.NET Core中Ocelot的使用API网关的应用ASP.NET Core中Ocelot的使用基于Spring Cloud Netflix Eureka的动态路由ASP.NET Core中Ocelot的使用基于服务发现的负载均衡【.NET Core项目实战-统一认证平台】第一章 功能及架构分析定制Ocelot来满足需求【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置1【.NET Core项目实战-统一认证平台】第四章 网关篇-数据库存储配置2【.NET Core项目实战-统一认证平台】第五章 网关篇-自定义缓存Redis【.NET Core项目实战-统一认证平台】第六章 网关篇-自定义客户端授权【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流原文地址:https://www.cnblogs.com/jackcao/p/10031828.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.zqtcl.cn/news/725832/

相关文章:

  • 郑州建设工程交易中心网站汉寿做网站的公司
  • 青岛企业做网站startuply中文版wordpress主题
  • 商标设计网站猪八戒网站建设与设计教程
  • 网站建设积分wordpress添加右侧菜单
  • 网站策划资料方案天津优化公司
  • 做网站推广哪家公司好成都最正规的装修公司
  • 菜鸟建网站如何制作推广网站
  • 无锡企业建站系统广州品牌网站建设
  • 什么网站能免费做公众号封面wordpress主题打不开
  • 扬州外贸网站建设制作广告的软件
  • 一个主机怎么做两个网站百度上的网站怎么做
  • 济南建设工程业绩公示的网站wordpress载入等待
  • seo公司名字太原百度seo排名软件
  • 安徽省城乡建设厅网站拼多多关键词排名在哪里看
  • 素材下载网站开发wordpress微信付款插件
  • 网站有什么用河北廊坊建筑模板厂家
  • 永康住房和城乡建设部网站做网站 万户
  • 可信赖的常州网站建设做直播券的网站有多少
  • 网络营销案例分析pptseo策略是什么意思
  • 论坛网站建设视频青岛网站设计软件
  • 租用网站服务器价格清远医院网站建设方案
  • 房地产网站建设方案书福田所有车型
  • 网站功能描述高清视频网络服务器免费
  • 天台做网站微博推广效果怎么样
  • 苏州专门网站网站站长统计怎么做
  • 社交网站开发注意事项call_user_func_array() wordpress
  • 泉州企业免费建站个人网站设计与开发
  • 网站建设流程书籍互联网行业黑话
  • 山亭 网站建设wordpress 添加头像
  • 龙南县建设局网站新手如何做网络推广