统计身份认证及日志处理微服务系统及其实现方法与流程

文档序号:17082432发布日期:2019-03-09 00:26阅读:399来源:国知局
统计身份认证及日志处理微服务系统及其实现方法与流程

本发明涉及网络安全技术领域,具体涉及一种统计身份认证及日志处理微服务系统及其实现方法。



背景技术:

随着互联网应用的普及,在大数据、高并发的环境下,系统架构需要面对极为严苛的挑战,必须至少要满足高性能、独立性、容易扩展、便于管理、状态监控与告警这几个方面,由此微服务架构便应运而生。

传统的单体应用将所有业务功能全部聚合在一个项目中,如图1所示。这样的单体应用隐患非常的多,任何一个bug都有可能导致整个系统宕机,维护这样的一个系统,不仅效率极低,而且充满风险。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是:如何设计一种能够满足代码的高内聚低耦合要求的统计身份认证及日志处理微服务系统及其实现方法。

(二)技术方案

为了解决上述技术问题,本发明提供了一种统计身份认证及日志处理微服务系统,包括身份认证模块;所述身份认证模块用于自定义过滤器并继承zuul过滤器,并利用四种方法重写zuul过滤器,所述四种方法分别是设置过滤方式、过滤顺序,过滤的路径以及进行身份认证的具体操作。

优选地,所述系统还包括日志管理模块,所述日志管理模块用于在身份认证模块重写zuul过滤器之后,实现过滤器,对相应操作进行拦截,并将拦截的日志记录到数据库中。

本发明还提供了一种所述的系统的实现方法,包括以下步骤:

所述身份认证模块的具体实现步骤如下:

步骤1、自定义过滤器并继承zuul过滤器;

步骤2、利用四种方法重写zuul过滤器:设置过滤方式、过滤顺序,过滤的路径以及进行身份认证的具体操作,进行身份认证的具体操作时,封装不符合身份认证的请求的信息,并返回。

优选地,步骤2中,配置过滤优先级为0,为最高优先级,过滤方式为“pre”,在http的pre阶段进行过滤。

优选地,步骤2中,还配置过滤的路径,当请求路径为本地路径或者为获取令牌接口时不进行过滤,对于其他所有路径都进行过滤。

优选地,步骤2中,还进行身份认证的具体操作:获取当前请求的请求头中的令牌,通过jwt根据后端配置文件中的密钥进行解析,如果解析失败,则封装统一的json返回结果;如果验证成功,说明令牌有效,对获取到的令牌进行解析,解析当前身份信息对应的资源(权限),遍历当前身份信息的资源,如果没有一条与需要请求的资源信息匹配,则封装统一的json返回结果,否则认证通过。

优选地,步骤2中,如果请求的路径是获取令牌接口,则zuul网关不进行过滤,而是将请求发送到相应的接口,该接口通过jwt根据该用户的角色、账号、资源使用hs512签名生成新的令牌,并添加令牌的过期时间,返回给客户端。

优选地,所述日志管理模块的具体实现步骤如下:

步骤1’、实现过滤器:对所有的请求路径进行拦截处理;

步骤2’、对相应操作进行拦截:对新增、修改、删除操作进行拦截处理,记录请求和响应内容;

步骤3’、将拦截的日志记录到数据库中。

优选地,步骤1’中,实现spring的过滤器,初始化拦截器配置,增加webfilter注解过滤所有路径,设置优先级为最高。

优选地,步骤2’中,重写过滤器的过滤方法,首先通过请求头获取当前请求的用户账户,因为调用为rest风格,当用户账户存在并且请求为新增、修改、删除操作时,拦截当前请求的来源和去向,从中获取请求信息以及响应信息。

(三)有益效果

本发明基于springcloud的zuul网关,以及jwt的静态认证来实现用户登录的身份认证,基于springboot的webfilter注解来实现系统日志的拦截处理,设计了一种应用于httprestful的请求方式以及对日志需要比较详细的记录的应用系统及其实现方法,本发明利用springcloud微服务很容易地实现了系统的组件化,既提高了系统的性能又便于维护,身份认证和日志记录这两个服务都应用到了jwt的认证和解析,而且zuul网关本就是对所有路径的一个拦截处理过程,因此不需要再这两个模块再分别细分成两个微服务组件,因此真正地实现了代码的高内聚低耦合要求。

附图说明

图1为现有的单体应用架构示意图;

图2为本发明加入zuul后的微服务集群架构示意图;

图3为本发明的身份认证模块的zuul身份认证流程图;

图4为本发明的日志管理模块的日志过滤流程图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明设计的一种统计身份认证及日志处理微服务系统,采用了微服务架构,如下图2所示,图2为微服务架构中的其中一个组件,相较单体应用,微服务将之前全部耦合在一起的各个业务模块进行模块化,使每一个业务模块都成为单独的组件,即提升了应用程序的性能又便于管理,而且独立化的模块一旦出现bug或其他问题,不会影响其他的模块或者整个应用。

身份认证和日志管理是每个安全审计、态势系统必不可少的模块,而且当用户量达到一定程度时,对这两个模块的调用都会非常的频繁,因此将这两个模块独立出来是非常有必要的,一方面可以减少主应用程序的压力,另一方面也能对这两个模块进行很好的管理扩容。因此,本发明的统计身份认证及日志处理微服务系统包括身份认证模块和日志管理模块。

该身份认证模块用于自定义过滤器并继承zuul过滤器,利用四种方法重写zuul过滤器,所述四种方法分别是设置过滤方式、过滤顺序,过滤的路径以及进行身份认证的具体操作。

具体实现步骤如下:

步骤1、自定义过滤器并继承zuul过滤器,本步骤是核心步骤,继承该类之后就能对所有需要身份认证的资源进行过滤。

步骤2、利用四种方法重写zuul过滤器:设置过滤方式、过滤顺序,过滤的路径以及进行身份认证的具体操作,进行身份认证的具体操作时,封装不符合身份认证的请求的信息,并返回。

相应的流程图如图3所示。

步骤2中,配置过滤优先级为0,为最高优先级,过滤方式为“pre”,在http的pre阶段进行过滤;

步骤2中,还配置过滤的路径,当请求路径为本地路径或者为获取令牌接口时不进行过滤,对于其他所有路径都进行过滤,代码片段如下所示。

步骤2中,还进行身份认证的具体操作:获取当前请求的请求头中的令牌,通过jwt根据后端配置文件中的密钥进行解析,如果解析失败,则封装统一的json返回结果;如果验证成功,说明令牌有效,对获取到的令牌进行解析,解析当前身份信息对应的资源(权限),遍历当前身份信息的资源,如果没有一条与需要请求的资源信息匹配,则封装统一的json返回结果,否则认证通过。代码片段如下:

以上为身份验证的具体操作流程,如果请求的路径是获取令牌接口,则zuul网关不进行过滤,而是会将请求发送到相应的接口,该接口通过jwt根据该用户的角色、账号、资源使用hs512签名生成新的令牌,并添加令牌的过期时间,返回给客户端。

该日志管理模块用于实现过滤器,对相应操作进行拦截,并将拦截的日志记录到数据库中;

具体实现步骤如下:

步骤1’、实现过滤器:对所有的请求路径进行拦截处理。

步骤2’、对相应操作进行拦截:对新增、修改、删除操作进行拦截处理,记录请求和响应内容。

步骤3’、将拦截的日志记录到数据库中。

相应的流程如图4所示。

步骤1’中,实现spring的过滤器,初始化拦截器配置。增加webfilter注解过滤所有路径,设置优先级为最高。

步骤2’中,重写过滤器的过滤方法,首先通过请求头获取当前请求的用户账户,因为调用为rest风格,当用户账户存在并且请求为post(新增)、put(修改)、delete(删除)操作时,拦截当前请求的来源(request)和去向(response),从中获取请求信息以及响应信息。在此说明:没有记录get(查询)操作,因为查询不涉及到数据库数据的变动,而且一般查询的响应体比较大,所以没有记录。相应的代码片段如下所示。

步骤3’中,通过springdatajpa将拦截得到的相应信息存入到数据库中,并在本地记录日志备份。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1