Class SignVerifyAspect

java.lang.Object
tech.riemann.nif.web.sign.SignVerifyAspect

public class SignVerifyAspect extends Object
签名验证切面

基于Spring AOP实现的签名验证拦截器,用于拦截带有@SignVerify注解的类或方法

验证流程: 1. 检查请求是否标记@SignVerify注解 2. 从请求Header中获取appId 3. 通过appId查询密钥信息 4. 从请求Header中提取签名、时间戳、nonce等参数 5. 验证时间戳是否在有效期内 6. 验证nonce是否重复使用 7. 计算签名并与请求签名对比

配置示例:

nif:
  web:
    sign:
      enabled: true
      default-expire-seconds: 300

密钥不由配置提供:请注册 AppSecretProvider(对称算法:HMAC_SHA256 / SM3) 或 AppKeyProvider(非对称算法:SM2 / RSA)Bean。

Author:
Kerbores(kerbores@riemann.tech)
  • Constructor Details

    • SignVerifyAspect

      public SignVerifyAspect(SignVerifier signVerifier, boolean enabled, NonceCache nonceCache)
  • Method Details

    • verifySign

      public Object verifySign(org.aspectj.lang.ProceedingJoinPoint point) throws Throwable
      AOP环绕通知,拦截带有@SignVerify注解的方法或类
      Parameters:
      point - AOP切入点
      Returns:
      业务方法执行结果
      Throws:
      Throwable - 业务方法抛出的异常或签名验证异常