# 安全配置

# 用户信息

在如下途径中获取到的当前用户信息(包括但不限于),默认是从sso的令牌验证接口/introspect解析:

  • vars.user

  • @Autowired SecuritySupport securitySupport; securitySupports.getSecurityContext().getCurrentUser();

  • Security.get().getCurrentUser()

若对接的sso在令牌验证返回时缺失部分用户信息,如用户中文名称、组织 id 等,需要从/userinfo查询的话,可添加配置:

fly:
  security:
    userinfo:
      remote:
        enabled: true

增加从/userinfo接口获取用户信息,最终会与令牌验证中的用户信息进行合并。

# 认证 / 忽略认证 urls

配置类:fly.security.SecurityProperties

fly:
  security:
    # 需要认证的地址,支持带通配符。默认为空,当为空时,所有请求地址都需要携带认证信息
    authenticated-urls:
    # 默认忽略认证地址,默认有:
    # /error、/**.html、/**/*.html、/*.ico、/public/**、/static/**、/resources/**、/webjars/**
    default-ignored-urls:
      - "/error"
    # 忽略认证地址
    ignored-urls:
      - "/swagger-*.html"

default-ignored-urlsignored-urls不同的是default-ignored-urls框架已设置默认值,需要注意的是,两者配置后都会覆盖原有值,包括主工程设置后,会覆盖依赖包中的该配置。

如果希望在不影响原有配置的情况下添加忽略地址,可以实现SpringWebSecurityCustomizer

@Bean
public WebSecurityCustomizer example() {
    return web -> {
        web.ignoring().antMatchers("/ignored-url1", "/ignored-url2");
    };
}

# 纯客户端身份访问

是否允许纯客户端身份访问,默认为false

fly:
  security:
    allowClientOnly: false

# CSRF

CSRF(跨站域请求伪造)是一种挟制用户在当前已登录的Web应用程序上执行非本意操作的攻击方法,Spring Security引入后默认开启CSRF处理,但对于RESTful开发会有部分冲突(不支持POST),对此Fly Framework默认关闭了Spring SecurityCSRF处理,可根据需求开启。

前缀:fly.security.csrf,对应类为:fly.security.SecurityProperties.CSRF,配置简单说明如下:

配置 说明 类型 默认值
disabled 是否开启Spring SecurityCSRF处理 Boolean true
ignoredUrls 若开启CSRF,需要忽略处理的urls Set<String>

application.yml

fly:
  security:
    csrf:
      enabled: true
      ignored-urls:
        - /user

# 基础认证

HTTP Basic Auth相关配置。开启后,实际上会通过SpringHttpSecurityhttpBasic()设置,若同时引入了FlyRESTspringdoc-openapi,会在生成的API文档中增加对应的securityScheme

配置前缀:fly.security.basic-auth

详细可见配置类:fly.security.SecurityProperties.BasicAuth

配置 说明 类型 默认值
enabled 是否生效 Boolean false

application.yml

fly:
  security:
    basic-auth:
      enabled: true

# 内置用户

简化Spring Security使用InMemoryUserDetailsManager来设置内置用户,支持使用配置的方式添加。

配置前缀:fly.security.user-details-in-memory

详细可见配置类:fly.security.SecurityProperties.InMemoryUserDetails

配置 说明 类型 默认值
enabled 是否开启 boolean false
users 内置用户列表 List<InMemoryUser>

application.yml

fly:
  security:
    user-details:
      in-memory:
        enabled: true
        users:
          - username: fly  // 内置用户用户名
            password: 123  // 内置用户密码

# 用户认证缓存

配置前缀:fly.security.event.caching-user-authenticated

详细可见配置类:fly.security.event.EventProperties.CachingUserAuthenticated

fly:
  security:
    event:
      # 用户认证缓存配置及其默认值
      caching-user-authenticated:
        enabled: false # 是否开启
        cache-size: 1000 # 缓存大小
        expires-in: 300 # 过期时间(s)

# Opaque Token

拓展了Spring OAuth2ResourceServerPropertiesopaquetoken配置。

配置前缀:spring.security.oauth2.resourceserver

详细可见配置类:fly.security.oauth2.resource.ExtendedOAuth2ResourceServerProperties.Opaquetoken2

官方配置:

配置 说明 类型 默认值
clientId 用于通过令牌内省端点进行身份验证的客户端id String -
clientSecret 用于通过令牌内省终结点进行身份验证的客户端密钥 String -
introspection OAuth 2.0端点,通过该端点完成令牌内省 String -

拓展配置如下:

配置 说明 类型 默认值
tokenUri OAuth 2.0 token地址,通过该地址完整令牌认证 String -
caching 缓存相关配置 OpaquetokenCaching -
allowAccessTokenParameter 是否允许从请求参数access_token中获取令牌,Spring Security默认关闭,可通过此配置开启 Boolean true
spring:
  security:
    oauth2:
      resourceserver:
        opaquetoken:
          client-id: client1
          client-secret: secret1
          introspection-uri: http://localhost:${server.port}/oauth2/token/introspect
          token-uri: http://localhost:${server.port}/oauth2/token
          # 缓存配置及其默认值
          caching:
            enabled: true # 是否开启
            max-size: 1000 # 最大缓存数
            expires-in: 600 # 过期时间(s)
顶部