# 安全配置
# 用户信息
在如下途径中获取到的当前用户信息(包括但不限于),默认是从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-urls和ignored-urls不同的是default-ignored-urls框架已设置默认值,需要注意的是,两者配置后都会覆盖原有值,包括主工程设置后,会覆盖依赖包中的该配置。
如果希望在不影响原有配置的情况下添加忽略地址,可以实现Spring的WebSecurityCustomizer。
@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 Security的CSRF处理,可根据需求开启。
前缀:fly.security.csrf,对应类为:fly.security.SecurityProperties.CSRF,配置简单说明如下:
| 配置 | 说明 | 类型 | 默认值 |
|---|---|---|---|
disabled | 是否开启Spring Security的CSRF处理 | Boolean | true |
ignoredUrls | 若开启CSRF,需要忽略处理的urls | Set<String> | 无 |
application.yml:
fly:
security:
csrf:
enabled: true
ignored-urls:
- /user
# 基础认证
HTTP Basic Auth相关配置。开启后,实际上会通过Spring的HttpSecurity的httpBasic()设置,若同时引入了Fly的REST及springdoc-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 OAuth2ResourceServerProperties的opaquetoken配置。
配置前缀: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)