温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
Spring_Cloud
URL
身份
认证
算法
刘良杰
电脑与电信电脑与电信基于Spring Cloud和URL的身份认证算法 1,2 1,2 1,2 1,2 刘良杰 韩 锐 代宛航黄薏佳摘 要:单点登录是一种多个系统统一登录的方法。对目前主要的单点登录实现方法进行了比较分析,提出一种基于微服务框架(Spring Cloud)和统一资源定位系统(URL)的多类用户统一路径登录和身份认证的方案。该方案统一了多类用户登录入口并解决了用户使用多子系统时的重复登录问题,实现了“一次登录”“身份自动识别”“全网通行”。(1.重庆师范大学计算机与信息科学学院,重庆 410331;2.重庆市数字农业服务工程技术研究中心,重庆 410331)关键词:统一身份认证;单点登录;统一资源定位系统;Spring Cloud;Session中图分类号:TP393.08 文献标识码:A 文章编号:1008-6009(2022)11-0080-04随着技术的发展,系统开发的前后端分工越来越明确,传统的Cookie跨域携带Session的方式,提升了开发的独立性和不同应用之间的数据共享能力。但是,脱离了单体架构的Cookie携带方式在服务之间做到信息共享需要复杂的跨域允许和安全请求设置,且不能较好地解决信息安全问题。同时,跨域携带和传统拦截器机制2不能完全适应轻量级前后端分离的分布式架构服务。因此,分布式架构中用户安全访问控制和Session共享尚需进一步研究。2 现状及问题简单的单点登录常用Cookie共享机制解决跨域问题,而在企业的项目开发中,Redis+token方式的应用较为广泛。2.1 Cookie共享机制基于Cookie的共享机制是在同一主域下进行信息传递的最方便的跨域方式之一,可用来共享登录认证信息。Cookie中保存的信息只能在同源的网页中进行共享,在跨域时,要求一级域名相同,需要设置相同的Domain才能实现Cookie的共享,域名的分配条件较为严格,使得用户的请求资源受限;并且Cookie的安全性不高,容易暴露用户信息。2.2 Redis+token机制3 登录身份认证算法3.1 算法思想由于微服务的隔离性和扩展性,单点登录与Spring 统一身份认证是判断一个用户是否为合法用户的过程,使用户一次登录认证后,即可实现权限生态体系内各个系统的访问无缝链接,无须再次输入原有系统的账3号和口令。而单点登录是统一身份认证下的一种登录机制。所谓单点登录,就是通过用户的一次性身份认证鉴别登录,即可获得访问系统所有网络资源的授权,用户只需要在登录其中一个系统时进行认证,就可以通过单点登录在其他系统之间进行自由的访问,无须重复输4入用户名和密码验证身份。1 引言近年来,Redis+token逐渐成为行业中最流行的登录5认证信息存储方式,具有数据持久化的存储特性和较好的安全性,其依靠token(令牌)在Redis中的存取来实现身份认证,共享登录信息方便,深受广大开发人员喜爱。但是,在轻量级系统上Redis复杂的部署是开发的一大负担,且会受到开发环境的限制。此外,Redis还存在主机宕机、缓存穿透、雪崩等亟需解决的问题。传统的单体架构服务之间逻辑过于耦合,随着系统1的不断升级和代码规模的增长,应用难以维护和更新。微服务是一种分布式下的架构概念,旨在使用一系列小服务来替代原本单一的应用程序,其服务之间拥有较强的隔离性,各服务可以单独部署、运行和升级,它们互相协调和配合,组成一个完整的应用体系。Spring Cloud是目前最主流的微服务架构之一,作用是对服务进行拆分,此框架的提出较好地解决了拆分后的服务治理问题。但是,由于各个微服务的服务端口不相同,信息在服务间传递存在一定的限制。作者简介:刘良杰(2000),男,重庆人,学士,研究方向为人工智能。3.4 用户信息安全加密3.2 Spring Cloud微服务框架服务的部署3.3 URL携带用户登录信息6 Cloud在分布式系统结构的开发上契合度较高Spring Cloud低耦合的特性刚好满足了多子系统单点登录的开发需求。本文提出的解决方案中登录系统与应用站点是一对多的关系,所有类型的用户都使用统一的用户认证登录系统。用户第一次登录并向服务器发起请求后,服务器自动将请求数据与数据库做比对,核对信息无误后,验证用户的类型并查询其拥有的权限,再将用户信息与时间戳一起加密后打包返回给浏览器。浏览器则将响应数据放置在URL中,在页面的跳转的同时将打包的信息发送到用户子系统的首页。首页获取URL上的用户信息并向服务器发送请求,服务器接收数据将数据解密并提取用户信息和加密时间信息,若请求在有效期以内则放行,将用户数据存储在Session中,之后来自同一子系统(同一服务)的请求可以直接利用Session中的数据进行身份验证,无需繁琐地调用数据库,避免重复开销,保证了一定的工作效率。登录及验证的数据传输流程如图1所示。在Web开发中,仅依靠Session来实现数据的传递并不可取各子系统模块可能分布在不同的端口(tomcat)上,而端口之间Session是不允许共享的,在用户通过统一路径登录时,服务器将用户登录信息加密后返还到浏览器,浏览器使用URL携带信息的方式,将加密后的用户信息携带在URL头中传递给下一个页面,下一个页面获取URL头上的信息便可以向服务器发出数据请求,完成服务器端对应数据跨端口传输,届时在同一服务下就能够直接使用Session来进行数据的存取,较好地避免了跨域问题中Cookie的请求和响应被拦截的问题。加密系统在系统信息安全中起到至关重要的作用,用户在跳转页面访问不同的服务时通过URL携带用户信息。在URL头里面的用户信息是暴露在外的,有一定的危险性,并且,此类信息并非保存在Cookie当中,因此它的有效期设置有待进一步的完善。Spring Cloud的微服务框架将每个应用服务进行了服务的拆分,使每个微服务都有自己独立的数据库,能完成独立的数据访问,服务之间的数据调用互不影响。Spring Cloud的nacos动态配置服务可以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置,从微服务平台建设的视角管理数据中心的所有服务及元数据。服务包含统一用户登录服务、网关服务、feign-api统一管理服务等其他扩展服务。用户在使用统一用户登录服务时,系统利用feign工具远程调用查询服务进行用户数据的查询,以验证用户登录的有效性。本方案基于前后端分离模式进行开发,会出现由于前后端端口不一致导致数据跨域时无“Access-Control-Allow-Origin”响应头问题。对此,可以使用gateway网关服务进行全局跨域的设置,配置统一网关端口,拉取服务。在文件配置中通过管理路由、判断请求的规则进行匹配,解决前端网页options请求被拦截的问题。同时,这也便于前后端分离工程中Ajax请求方式的统一管理。对于在登录过程中涉及的用户信息安全问题,我们设计了如下信息加密方案:在用户登录时将用户id存放到图1 数据传输流程7980DOI:10.15966/ki.dnydx.2022.11.011电脑与电信电脑与电信基于Spring Cloud和URL的身份认证算法 1,2 1,2 1,2 1,2 刘良杰 韩 锐 代宛航黄薏佳摘 要:单点登录是一种多个系统统一登录的方法。对目前主要的单点登录实现方法进行了比较分析,提出一种基于微服务框架(Spring Cloud)和统一资源定位系统(URL)的多类用户统一路径登录和身份认证的方案。该方案统一了多类用户登录入口并解决了用户使用多子系统时的重复登录问题,实现了“一次登录”“身份自动识别”“全网通行”。(1.重庆师范大学计算机与信息科学学院,重庆 410331;2.重庆市数字农业服务工程技术研究中心,重庆 410331)关键词:统一身份认证;单点登录;统一资源定位系统;Spring Cloud;Session中图分类号:TP393.08 文献标识码:A 文章编号:1008-6009(2022)11-0080-04随着技术的发展,系统开发的前后端分工越来越明确,传统的Cookie跨域携带Session的方式,提升了开发的独立性和不同应用之间的数据共享能力。但是,脱离了单体架构的Cookie携带方式在服务之间做到信息共享需要复杂的跨域允许和安全请求设置,且不能较好地解决信息安全问题。同时,跨域携带和传统拦截器机制2不能完全适应轻量级前后端分离的分布式架构服务。因此,分布式架构中用户安全访问控制和Session共享尚需进一步研究。2 现状及问题简单的单点登录常用Cookie共享机制解决跨域问题,而在企业的项目开发中,Redis+token方式的应用较为广泛。2.1 Cookie共享机制基于Cookie的共享机制是在同一主域下进行信息传递的最方便的跨域方式之一,可用来共享登录认证信息。Cookie中保存的信息只能在同源的网页中进行共享,在跨域时,要求一级域名相同,需要设置相同的Domain才能实现Cookie的共享,域名的分配条件较为严格,使得用户的请求资源受限;并且Cookie的安全性不高,容易暴露用户信息。2.2 Redis+token机制3 登录身份认证算法3.1 算法思想由于微服务的隔离性和扩展性,单点登录与Spring 统一身份认证是判断一个用户是否为合法用户的过程,使用户一次登录认证后,即可实现权限生态体系内各个系统的访问无缝链接,无须再次输入原有系统的账3号和口令。而单点登录是统一身份认证下的一种登录机制。所谓单点登录,就是通过用户的一次性身份认证鉴别登录,即可获得访问系统所有网络资源的授权,用户只需要在登录其中一个系统时进行认证,就可以通过单点登录在其他系统之间进行自由的访问,无须重复输4入用户名和密码验证身份。1 引言近年来,Redis+token逐渐成为行业中最流行的登录5认证信息存储方式,具有数据持久化的存储特性和较好的安全性,其依靠token(令牌)在Redis中的存取来实现身份认证,共享登录信息方便,深受广大开发人员喜爱。但是,在轻量级系统上Redis复杂的部署是开发的一大负担,且会受到开发环境的限制。此外,Redis还存在主机宕机、缓存穿透、雪崩等亟需解决的问题。传统的单体架构服务之间逻辑过于耦合,随着系统1的不断升级和代码规模的增长,应用难以维护和更新。微服务是一种分布式下的架构概念,旨在使用一系列小服务来替代原本单一的应用程序,其服务之间拥有较强的隔离性,各服务可以单独部署、运行和升级,它们互相协调和配合,组成一个完整的应用体系。Spring Cloud是目前最主流的微服务架构之一,作用是对服务进行拆分,此框架的提出较好地解决了拆分后的服务治理问题。但是,由于各个微服务的服务端口不相同,信息在服务间传递存在一定的限制。作者简介:刘良杰(2000),男,重庆人,学士,研究方向为人工智能。3.4 用户信息安全加密3.2 Spring Cloud微服务框架服务的部署3.3 URL携带用户登录信息6 Cloud在分布式系统结构的开发上契合度较高Spring Cloud低耦合的特性刚好满足了多子系统单点登录的开发需求。本文提出的解决方案中登录系统与应用站点是一对多的关系,所有类型的用户都使用统一的用户认证登录系统。用户第一次登录并向服务器发起请求后,服务器自动将请求数据与数据库做比对,核对信息无误后,验证用户的类型并查询其拥有的权限,再将用户信息与时间戳一起加密后打包返回给浏览器。浏览器则将响应数据放置在URL中,在页面的跳转的同时将打包的信息发送到用户子系统的首页。首页获取URL上的用户信息并向服务器发送请求,服务器接收数据将数据解密并提取用户信息和加密时间信息,若请求在有效期以内则放行,将用户数据存储在Session中,之后来自同一子系统(同一服务)的请求可以直接利用Session中的数据进行身份验证,无需繁琐地调用数据库,避免重复开销,保证了一定的工作效率。登录及验证的数据传输流程如图1所示。在Web开发中,仅依靠Session来实现数据的传递并不可取各子系统模块可能分布在不同的端口(t