安全框架是一个提供身份验证(authentication)、授权(authorization)和防止常见攻击的框架。

️️⚠️ Apihug Security 与 Spring Security 在运行时不兼容,不建议在运行时共存。

ApiHug 提供了一个极简又凑效的解决方案,有别于传统 Apache Shiro, 或者 Spring Security。

底层依然是基于资源(Resource 也就是API)权限管理;如集合角色,就是一个极简RBAC架构,开箱即用。

协议

Proto 层如何定义协议 极简 Authentication & Authorization

实现

  1. SecurityAspect 切面 Aspect
  2. SecurityContext: 运行时候 security context, 包括资源 到 CheckerAuthorization 映射
  3. HopeSecurityManager 运行时 security 参数组装
  4. JWTFilter jwt filter 过滤

目前Aspect SecurityAspect 切面只支持 BEFORE 也就是进入资源(API)业务逻辑前校验。

配置

配置路径 hope.security; 配置对象 HopeSecurityProperties

配置备注
enabled是否启用 ApiHug Security.
jwtJWT 配置.
jwt.base64SecretBase64 secret.
jwt.secretsecret.
jwt.tokenValidityInSecondsForRememberMeRemember me 时候有效期,默认30天.
jwt.tokenValidityInSeconds默认有效时间,7天.

禁用 Spring Security

⚠️ Apihug Security 与 Spring Security 在运行时不兼容。

禁用 Spring Security 最简单的方法是从项目中移除其 依赖项

通过移除以下依赖,可以清除项目中所有由 Spring Security 提供的安全配置和默认设置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    <version>...</version>
</dependency>

移除该依赖后,应用程序中将不再包含任何 Spring Security 的功能。

但如果您仍希望使用部分 Spring Security 的组件,我们建议您手动禁用其自动配置功能:

排除 Spring Security 自动配置

当项目类路径中包含 spring-boot-starter-security 时,Spring Boot 会自动启用安全配置。若要禁用该自动配置,可在 application.properties 文件中添加如下配置:

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

如果您希望完全禁用 Spring Security,建议仅通过 spring.autoconfigure.exclude 配置实现,而不要创建 SecurityConfiguration 类。

请注意:手动定义 Spring Security 配置类会覆盖 application.properties 中的配置,因此当两者同时存在时,application.properties 中的排除配置将失效。

To be done 🏗️

Refer

  1. 极简 Authentication & Authorization
  2. Spring Security
  3. Apache Shiro
  4. RBAC - Role-based access control