安装

使用操作入门

其他

安装

本组件与 Spring Boot 程序无缝衔接。添加依赖后,即可在 Spring Boot 项目中使用。Maven 坐标:


<dependency>
    <groupId>com.ajaxjs</groupId>
    <artifactId>aj-security</artifactId>
    <version>1.0</version>
</dependency>

在 Java 8 + SpringBoot2.7 通过测试。

当前不支持非 Spring 程序。如果要在传统 Spring MVC 程序中使用,可能要针对配置的相关机制进行修改。

演示程序

我们于源码中附带有演示程序 Sample 可供安装配置参考,同时也作为测试用例的一部分,包含了各个安全组件的演示。浏览源码aj-security-samples目录,这是一个标准的 SpringBoot v2.7 工程。 执行FooApp类的main()函数即可启动该演示程序。

配置

开发者与 AJ Security 打交道更多是通过配置文件进行配置的。在 Spring 配置 YAML 文件application.yml中添加如下内容:

security:
  HttpReferer: # Referer 拦截
    globalCheck: false # 全局检查
    enabled: true
    allowedReferrers:
      - https://example.com
      - https://another-example.com
      - https://my-site.com

  TimeSignature: # 时间戳控制
    enabled: true
    secretKey: der3@x7Az#2 # 密钥,必填的

  IpList: # ip 白名单/黑名单
    globalCheck: false # 全局检查
    enabled: true
    whiteList:
      - 192.168.1.1
      - 192.168.1.2

  HttpBasicAuth: # HTTP Basic 认证
    globalCheck: true # 全局检查
    enabled: false
    username: admin
    password: admin

  HttpDigestAuth: # HTTP Digest 认证
    globalCheck: true # 全局检查
    enabled: false
    username: admin
    password: admin2
  EncryptedBody:
    publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmkKluNutOWGmAK2U80hM9JtzsgLAlgvHqncakqwhruE9TIXUQFDRKsIBQwN+3rLC76kyOl4U+eBefLaGQGJBZVq0qwIHBe4kfH0eJXaHyG/i9H2Iph1cyY6cn6ocPta6ZmSuOIcx4yLlpCgq5eDRigHs0AR418ZTlRItlhrY9+wIDAQAB
    privateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKaQqW42605YaYArZTzSEz0m3OyAsCWC8eqdxqSrCGu4T1MhdRAUNEqwgFDA37essLvqTI6XhT54F58toZAYkFlWrSrAgcF7iR8fR4ldofIb+L0fYimHVzJjpyfqhw+1rpmZK44hzHjIuWkKCrl4NGKAezQBHjXxlOVEi2WGtj37AgMBAAECgYBj9sX4o3UtG9qVVXX4votVVBGaztDocmIF0JL7GLqBC6hv19CNydJoUO1xiY+6iCW5YbB4k28gQqrKmXQxKszWFdd1NTHOKS3nti8I2QNc4T9FF34YvYh/WQlRw7dHmYUl/MCm6U6yVE7XK8GoYYOyAyclXuFR+SRw8/gHsoAYoQJBAPQ3L+K47QSujMSzu8ZcdRingN25VS8r790A18WNxtK9l/7b3l8aTUXmeGcjLpQDnx158jQ32fTUki5aa2eGDp0CQQCumkCpTgcvx0Ys66aXKnpaexWGWDK/ui9hY7lRdd2XijK30Uo2TlQ1ujXYjodbJJUAELE3UAC+0yj8W8Edf093AkAzrHWyaGSmZ/SbLlieCTQxqkenIq72kzpmreX6BBy8vKcrowQzZVJSZwi08gnKAdYqG4J3MBYrKstfiXxOZFw1AkA6+3radrRwzHWFWTnWmQ/qHug/kO3b3M6CrMh+nz1zIslNVVMnk0BZQgVMmaFaBbqb4gerssf9rqGK1ogfKdGzAkBQzGcbSAtTlCAMNMnOXphIvFQ/GnxlPwwr23ysyt0k14SOwGNfND4rXM2rTzjz+2yF20tGdGgmXfwnvKOaCc1N
    enabled: true
  ParamsSign:
    enabled: true
    secretKey: der3@x7Az42

可见在security中有各个安全组件的配置。抽象来看,主要有个配置是各个组件共用的,分别是enabledglobalCheck

@GetMapping("/HttpRefererCheck")
@HttpRefererCheck
int HttpRefererCheck();

各个组件的详细配置方式请参考其各个章节。

基本原理

我们提供了近十多种安全组件,几乎都是与 Spring 框架深度绑定,充分利用了 Spring 的可扩展机制与灵活的配置机制。 多数组件通过HandlerInterceptor拦截器实现,其他特殊组件采用HandlerMethodArgumentResolver、传统的Servlet FilterHttpMessageConverter均有。