一种基于oauth2协议的用户认证系统技术方案

技术编号:22725991 阅读:14 留言:0更新日期:2019-12-04 07:09
本发明专利技术提供一种基于oauth2协议的用户认证系统,属于web用户认证领域,本发明专利技术包括认证中心模块、Redis存储模块、用户中心模块,服务网关及其他模块。通过这几个模块实现众多微服务客户端节点用户认证,实现安全可靠的同时也简化开发模式,大大提升了各个节点的安全性和效率以及稳定性,降低了服务端的压力。

A user authentication system based on oauth2 protocol

The invention provides a user authentication system based on oauth2 protocol, belonging to the field of web user authentication. The invention includes authentication center module, redis storage module, user center module, service gateway and other modules. Through these modules, the user authentication of many microservice client nodes is realized, which not only realizes the security and reliability, but also simplifies the development mode, greatly improves the security, efficiency and stability of each node, and reduces the pressure of the server.

【技术实现步骤摘要】
一种基于oauth2协议的用户认证系统
本专利技术涉及web用户认证领域技术,尤其涉及一种基于oauth2协议的用户认证系统。
技术介绍
云计算作为一种新型的互联网模式,具有良好的发展势头和前景。但云计算的发展总体来说还处于前期阶段,许多问题阻碍云计算的发展,其中信息安全问题是人们比较关心的方面,在云计算的基础之上提供云服务,应用和数据隔离与共享伴随的安全隐患,用户的认证与访问管理就成为云计算安全的主要问题之一。为此,根据云计算的数据存储和服务的特点,选择第三方认证服务是一个不错的解决方案。
技术实现思路
为了解决以上技术问题,本专利技术提出了一种基于oauth2协议的用户认证系统,并将认证服务设计为简洁高效模式,将微服务架构下用户认证的灵活高效可靠。本专利技术在现有的第三方服务的基础会之上进行多方面的优化,使得对数据访问的安全性得到大大提高,利用JWT令牌特性服务器访问压力大幅度减轻,为云计算提供更为可靠的安全特性。本专利技术的技术方案是:一种基于oauth2协议的用户认证系统,包括用户认证中心模块、Redis令牌存储模块、用户中心模块,服务网关模块;其中,用户认证中心模块:对登录用户进行校验,校验合法后颁发jwt令牌;Redis令牌存储模块:该模块的功能包括存储用户认证之后颁发的令牌,客户端令牌校验;用户中心模块:对用户信息进行管理的模块,同时对用户信息进行加密,提供供认证中心用户校验时的用户信息;服务网关模块:使用网关对服务资源进行统一管理,校验访问者jwt令牌的合法性。进一步的,用户认证中心是整个认证项目的核心,对用户信息进行认证并颁发令牌;首先用户在登录页面输入用户名和密码,发送post请求到用户认证中心url+port/auth/oauth/token,参数说明:grant_type:password,username:账号,password:密码,此链接需要使用httpBasic认证,认证中心接受到用户请求,调用用户中心接口,校验通过后,生成jwt令牌,令牌使用的是SpringSecurity提供的JwtHelper来创建,使用Java提供Keytool证书管理工具采用RSA加密算法生成秘钥证书,其命令为keytool-genkeypair-alias**-keyalgRSA-keypass**-keystore**-storepass**,将证书添加到认证工程中,用于生成令牌,使用openssl加解密工具包,导出公钥信息用于对令牌进行解密。将jwt令牌存入redis中,将短令牌即身份令牌写入cookie,返回给客户端。进一步的,Redis令牌存储模块主要供服务网关调用,服务网关从cookie中获取令牌,取查询jwt令牌是否过期,如果过期则拒绝用户访问资源。进一步的,用户中心模块采用bcrypt方法对信息进行了加密。进一步的,服务网关模块对访问用户令牌进行校验的模块,用户访问服务网关,过滤器对header里的令牌,cookies里的令牌,redis里令牌是否过期进行校验,当校验全部通过之后,将请求转发到相应的资源服务上。流转步骤如下:步骤一:用户通过浏览器登录,向授权认证服务请求认证;步骤二:认证服务认证通过向浏览器cookie写入token;认证服务请求SpringSecurity申请令牌,认证服务将token和jwt令牌存储至redis中,认证服务向cookie写入token;步骤三:客户端携带cookie中的token身份令牌及jwt令牌访问资源服务;客户端请求资源服务需要携带两个token,一个是cookie中的身份令牌,一个是httpheader中的jwt令牌;客户端请求资源服务前在httpheader上添加jwt请求资源;步骤四:网关校验token的合法性用户请求必须携带token身份令牌和jwt令牌网关校验redis中token是否合法,已过期则要求用户重新登录;步骤五、资源服务校验jwt的合法性并完成授权资源服务校验jwt令牌,完成授权,拥有权限的方法正常执行,没有权限的方法将拒绝访问。本专利技术的有益效果是(1)本专利技术使用了jwt令牌,客户端与认证服务只需建立以一次连接就可以,后续客户端访问资源服务,无需再次验证,在资源服务端即可完成校验,从而减轻了认证服务器的压力。(2)使用服务服务网关,可以对请求进行统一的收口,统一的过滤,简化代码的重复性,配合服务注册与发现,网关对请求代理后,还可以把请求分发到运转正常的服务消费端,分发的同时也实现了负载均衡。(3)采用redis存储令牌,而非使用cookies存储,节约了存储空间,同时利用redis存储数据的特性,非常方便的完成令牌过期时间的判断。附图说明图1是令牌校验示意图;图2是整体工程简图;图3是网关简图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本申请包括用户认证中心模块、Redis令牌存储模块、用户中心模块,服务网关模块,通过这几个模块来降低数据泄露的风险,同时减轻服务器访问压力。各模块主要负责的功能如下:用户认证中心模块:对登录用户进行校验,校验合法后颁发jwt令牌。用户中心模块:对用户信息进行管理的模块,同时对用户信息进行加密(这里使用bcrypt加密),提供供认证中心用户校验时的用户信息。Redis令牌存储模块:该模块的功能包括存储用户认证之后颁发的令牌,客户端令牌校验。服务网关模块:使用网关对服务资源进行统一管理,校验访问者jwt令牌的合法性参照图2、3对这几大模块进行详解。用户认证中心模块:用户认证中心是整个认证项目的核心,对用户信息进行认证并颁发令牌。Oauth2提供一下几种授权模式,授权码模式(AuthorizationCode)隐式授权模式(Implicit)密码模式(ResourceOwnerPasswordCredentials)客户端模式(ClientCredentials)其中比较常用的授权码模式,密码模式,本方案选用密码模式进行授权。首先用户在登录页面输入用户名和密码,发送post请求到用户认证中心url+port/auth/oauth/token,参数说明:grant_type:password,username:账号,password:密码,注意此链接需要使用httpBasic认证,认证中心接受到用户请求,调用用户中心接口,校验通过后,生成jwt令牌,令牌使用的是S本文档来自技高网...

【技术保护点】
1.一种基于oauth2协议的用户认证系统,其特征在于,/n包括用户认证中心模块、Redis令牌存储模块、用户中心模块,服务网关模块;/n其中,/n用户认证中心模块:对登录用户进行校验,校验合法后颁发jwt令牌;/nRedis令牌存储模块:该模块的功能包括存储用户认证之后颁发的令牌,客户端令牌校验;/n用户中心模块:对用户信息进行管理的模块,同时对用户信息进行加密,提供供认证中心用户校验时的用户信息;/n服务网关模块:使用网关对服务资源进行统一管理,校验访问者jwt令牌的合法性。/n

【技术特征摘要】
1.一种基于oauth2协议的用户认证系统,其特征在于,
包括用户认证中心模块、Redis令牌存储模块、用户中心模块,服务网关模块;
其中,
用户认证中心模块:对登录用户进行校验,校验合法后颁发jwt令牌;
Redis令牌存储模块:该模块的功能包括存储用户认证之后颁发的令牌,客户端令牌校验;
用户中心模块:对用户信息进行管理的模块,同时对用户信息进行加密,提供供认证中心用户校验时的用户信息;
服务网关模块:使用网关对服务资源进行统一管理,校验访问者jwt令牌的合法性。


2.根据权利要求1所述的系统,其特征在于,
用户认证中心是整个认证项目的核心,对用户信息进行认证并颁发令牌;
首先用户在登录页面输入用户名和密码,发送post请求到用户认证中心url+port/auth/oauth/token,参数说明:grant_type:password,username:账号,password:密码;
此链接需要使用httpBasic认证,认证中心接受到用户请求,调用用户中心接口,校验通过后,生成jwt令牌,令牌使用的是SpringSecurity提供的JwtHelper来创建,使用Java提供Keytool证书管理工具采用RSA加密算法生成秘钥证书,其命令为keytool-genkeypair-alias**-keyalgRSA-keypass**-keystore**-storepass**,将证书添加到认证工程中,用于生成令牌。


3.根据权利要求2所述的系统,其特征在于,
使用openssl加解密工具包,导出公钥信息用于对令牌进行解密。


4.根据权利要求3所述的系统,其特征在于,
将jwt令牌存入redis中,将短令牌即身份令牌写...

【专利技术属性】
技术研发人员:马洪志杨继伟窦洋
申请(专利权)人:浪潮云信息技术有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1