0


SpringCloud微服务安全之API审计日志功能实现

SpringCloud微服务安全之API审计日志功能实现

1.审计功能介绍

在这里插入图片描述
审计日志

  • 定义:谁,在什么时间,干了什么事。
  • 位置:认证之后,授权之前。这样就知道是谁在访问,拒绝掉的访问也能被记录。如果放在认证之前,那么就不知道是谁在访问;如果放在授权之后,就没办法记录被拒绝的访问。
  • 存储:审计日志一定要持久化,记在数据库里或者是文件,放在内存会丢失。
  • 怎么记:请求进来的时候记录一次,请求出去的时候,更新日志。如果只在请求进来的时候记,那么请求的成功与否是不知道的。如果只在请求返回的时候记,那么如果一个请求把你的系统搞挂了,也没有记,是不知道谁搞挂的。
  • 技术选择:过滤器 、拦截器 、ControllerAdvice 、 AOP。过滤器不好分辨是请求过来执行的还是请求出去执行的; ControllerAdvice-做全局异常处理 ;AOP 将代码分散到多个地方,导致跟踪和调试变得更加复杂;拦截器在过滤器之后执行即可。在这里插入图片描述

2.记录的实体类设计

具体字段可以自行设计,持久层框架可以用MyBatis或者jpa(这里用的jpa)

importlombok.Data;importnonapi.io.github.classgraph.json.Id;importorg.springframework.data.annotation.CreatedDate;importorg.springframework.data.annotation.LastModifiedDate;importorg.springframework.data.jpa.domain.support.AuditingEntityListener;importjavax.persistence.*;importjava.io.Serializable;importjava.util.Date;@Entity@Data@EntityListeners(AuditingEntityListener.class)//加一个监听器,后面的@CreateDate等注解才能监听得到当前时间publicclassAuditLogimplementsSerializable{
   @javax.persistence.Id@Id@GeneratedValue(strategy =GenerationType.IDENTITY)privateLong id;privateString method;//请求方式privateString path;//请求路径privateString notes;//请求注释privateString parameters;//请求参数列表privateInteger status;//http返回的状态码privateString outPut;//响应内容privateString userId;//发起请求的用户idprivateString userName;//发起请求的用户名privateString userAccount;//发起请求的账号名privateString requestAddr;//请求地址privateString realAddr;//请求真实ipprivateString responseAddr;//响应地址privateLong totalTime;//响应请求的总时长@Temporal(TemporalType.TIMESTAMP)//这个注解表示要存储到数据库中的时候以"时间戳"的形式存储@CreatedDate//JPA 会在 save 到数据库之前自动获取当前时间赋值给该值privateDate createTime;//创建时间@Temporal(TemporalType.TIMESTAMP)@LastModifiedDateprivateDate modifyTime;//修改时间}

3.保存审计记录到数据库的工具

在application.yml配置文件中添加jpa配置

#jpa相关配置
  jpa:
    generate-ddl:trueopen-in-view:false
    show-sql:true

采用jpa框架的代码

importorg.springframework.data.jpa.repository.JpaSpecificationExecutor;importorg.springframework.data.repository.CrudRepository;publicinterfaceAuditLogRepositoryextendsJpaSpecificationExecutor<AuditLog>,CrudRepository<AuditLog,Long>{
   

本文转载自: https://blog.csdn.net/weixin_44330367/article/details/135267245
版权归原作者 funfan0517 所有, 如有侵权,请联系我们删除。

“SpringCloud微服务安全之API审计日志功能实现”的评论:

还没有评论