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中,将短令牌即身份令牌写入cookie,返回给客户端。
5.根据权利要求1所述的系统,其特征在于,
redis令牌存储模块主要供服务网关调用,服务网关从cookie中获取令牌,取查询jwt令牌是否过期,如果过期则拒绝用户访问资源。
6.根据权利要求1所述的系统,其特征在于,
用户中心模块采用bcrypt方法对信息进行了加密。
7.根据权利要求1所述的系统,其特征在于,
服务网关模块对访问用户令牌进行校验的模块,用户访问服务网关,过滤器对header里的令牌,cookies里的令牌,redis里令牌是否过期进行校验,当校验全部通过之后,将请求转发到相应的资源服务上。
8.根据权利要求1所述的系统,其特征在于,
流转步骤如下:
步骤一:用户通过浏览器登录,向授权认证服务请求认证;
步骤二:认证服务认证通过向浏览器cookie写入token;
认证服务请求springsecurity申请令牌,认证服务将token和jwt令牌存储至redis中,认证服务向cookie写入token;
步骤三:客户端携带cookie中的token身份令牌及jwt令牌访问资源服务;
客户端请求资源服务需要携带两个token,一个是cookie中的身份令牌,一个是httpheader中的jwt令牌;
客户端请求资源服务前在httpheader上添加jwt请求资源;
步骤四:网关校验token的合法性
用户请求必须携带token身份令牌和jwt令牌网关校验redis中token是否合法,已过期则要求用户重新登录;
步骤五、资源服务校验jwt的合法性并完成授权
资源服务校验jwt令牌,完成授权,拥有权限的方法正常执行,没有权限的方法将拒绝访问。