Skip to content

八、属性配置列表

ZeroOrInfinity edited this page May 17, 2021 · 78 revisions

一键登录属性

属性 类型 默认值 描述 可选项
ums.oneClickLogin.loginProcessingUrl String /authentication/one-click 一键登录请求处理 url, 默认 /authentication/one-click
ums.oneClickLogin.login.enable Boolean false 一键登录是否开启, 默认 false true/false
ums.oneClickLogin.tokenParamName String accessToken token 参数名称, 默认: accessToken
ums.oneClickLogin.otherParamNames List 其他请求参数名称列表(包括请求头名称), 此参数会传递到 OneClickLoginService.callback(String, Map)UserDetailsRegisterService.registerUser(String, Map); 默认为: 空

ums-spring-boot-starter 属性

属性 类型 默认值 描述 可选项
ums.autoGetTokenUri String /oauth2Token 第三方登录成功后, 返回获取 token 自动脚本页面. 默认: /oauth2Token
ums.oauth2CallbackUri String /oauth2Callback 第三方登录成功后, autoGetTokenUrl 获取 token 处理接口 url, 默认: /oauth2Callback
ums.oauth2TokenParamName String tk 第三方登录成功后, oauth2TokenUri 接收的参数名称, 默认: tk
ums.tempOauth2TokenPrefix String TEMP:OAuth2Token: 存储 OAuth2Token 的临时缓存前缀: 默认: TEMP:OAuth2Token:
ums.delimiterOfTokenAndRefreshToken String #@# token refreshToken 的分隔符: 默认: #@#
ums.tempOauth2TokenTimeout Duration PT30S 第三方登录成功后, 临时存储在 redis token 值的 TTL, 默认: 30 秒

JWT 配置属性

属性 类型 默认值 描述 可选项
ums.jwt.enable Boolean true 是否支持 jwt, 默认: false true/false
ums.jwt.timeout Duration PT1H JWT 的有效期, 默认: 1 小时
ums.jwt.clockSkew Duration PT0S 授权服务器的时钟与资源服务器的时钟可能存在偏差, 设置时钟偏移量以消除不同服务器间的时钟偏差的影响, 默认: 0 秒.
ums.jwt.remainingRefreshInterval Duration PT600S JwtRefreshHandlerPolicy.AUTO_RENEW 时, JWT 剩余的有效期间隔小于此值后自动刷新 JWT; 当 JwtRefreshHandlerPolicy.REFRESH_TOKEN 时, JWT 剩余的有效期间隔小于此值后通过 refreshToken 才会刷新新的 JWT, 否则直接返回旧的 JWT. 默认: 600 秒.
ums.jwt.alwaysRefresh Boolean false 通过 refreshToken 刷新 jwt 时, 如果 alwaysRefresh = false, oldJwt 剩余有效期没在 ums.jwt.remainingRefreshInterval 的时间内, 原样返回 oldJwt, 如果 ums.jwt.alwaysRefresh = true, 每次通过 refreshToken 刷新 jwt 则总是返回 newJwt. 默认: false true/false
ums.jwt.refreshHandlerPolicy JwtRefreshHandlerPolicy REJECT Jwt 刷新处理策略, 默认: REJECT . AUTO_RENEW/REFRESH_TOKEN/REJECT
ums.jwt.jwtByRefreshTokenUri String /jwt/refreshToken 通过 refreshToken 获取 JWT uri, 默认: /jwt/refreshToken, 注意: 当 exposeRefreshTokenUri=true 时才生效
ums.jwt.exposeRefreshTokenUri Boolean false 是否曝露 jwtByRefreshTokenUri, 默认: false true/false
JWS 与 JWK 相关
ums.jwt.exposeJwkSetUri Boolean false 是否曝露 jwk-set-uri, 默认: false. 如果为 true, 需要实现 JwkEndpointPermissionService 权限服务接口 true/false
ums.jwt.jwsAlgorithms String RS256 Use the given signing algorithm . The value should be one of RS256, RS384, RS512, HS256, HS384, or HS512 . 默认: RS256 RS256, RS384, RS512, HS256, HS384, or HS512
ums.jwt.macsSecret String 用于 JWTHMAC protectionsecret, 字符长度必须大于等于 32; 当设置此属性时, 属性 jwsAlgorithms 必须是 HS256, HS384, HS512 中的一个. 注意: 属性 macsSecret jksKeyPairLocation 同时配置, jksKeyPairLocation 属性优于 macsSecret.
ums.jwt.jksKeyPairLocation Resource 用于 JWT 的密钥键值对(KeyPair)的文件位置; 当设置此属性时, 属性 jwsAlgorithms 必须是 RS256, RS384, RS512 中的一个. 注意: 属性 macsSecret jksKeyPairLocation 同时配置, jksKeyPairLocation 属性优于 macsSecret.
ums.jwt.jksAlias String 密钥键值对(KeyPair)的别名
ums.jwt.jksPassword String 密钥键值对(KeyPair)的密码
ClaimSet 相关
ums.jwt.principalClaimName String sub JWT 存储 principal claimName, 默认: sub , 注意: 如果是高版本的 JwtAuthenticationConverter, 高版本没有 principalClaimName 字段, 所以必须是此默认值.
ums.jwt.kid String The "kid" (key ID) parameter is used to match a specific key. This is used, for instance, to choose among a set of keys within a JWK Set during key rollover. The structure of the "kid" value is unspecified. When "kid" values are used within a JWK Set, different keys within the JWK Set SHOULD use distinct "kid" values. (One example in which different keys might use the same "kid" value is if they have different "kty" (key type) values but are considered to be equivalent alternatives by the application using them.) The "kid" value is a case-sensitive string. Use of this member is OPTIONAL. When used with JWS or JWE, the "kid" value is used to match a JWS or JWE "kid" Header Parameter value.
ums.jwt.iss String 该JWT的签发者, 必须是 URL, 根据是否需要设置
Bearer token
ums.jwt.bearer.bearerTokenParameterName String access_token request parameter name, 默认为: access_token. 不能为 null 值. 注意: 1. 属性 bearerTokenParameterName 只有在 allowFormEncodedBodyParameter allowUriQueryParameter 其中一方为 true 时生效.
ums.jwt.bearer.bearerTokenHeaderName String Authorization bearer token header name. 默认: Authorization . 不能为 null 值. 注意: 1. 属性 bearerTokenHeaderName 只有在 allowFormEncodedBodyParameter, allowUriQueryParameter 都为 false 时生效. 2. 如果是跨域的场景, 需要设置 ums.client.cors.accessControlExposeHeaders. 3. 当 usm.jwt.refreshHandlerPolicy=AUTO_RENEW 时, 不管此字段是否生效, 刷新的 jwt 直接设置到此 header 中, 前端可以从相应的 header 中获取.
ums.jwt.bearer.refreshTokenParameterName String refresh_token request parameter name, 默认为: refresh_token . 不能为 null 值. 注意: 1. 属性 refreshTokenParameterName 只有在 allowFormEncodedBodyParameter allowUriQueryParameter 其中一方为 true 时生效. 2. 目前 allowFormEncodedBodyParameter, allowUriQueryParameter 属性还不能配置, 默认都为 false, refreshTokenParameterName 总是失效.
ums.jwt.bearer.refreshTokenHeaderName String refresh_token bearer token header name. 默认: refresh_token . 不能为 null 值. 注意: 1. 属性 refreshTokenHeaderName 只有在 allowFormEncodedBodyParameter, allowUriQueryParameter 都为 false 时生效. 2. 如果是跨域的场景, 需要设置 ums.client.cors.accessControlExposeHeaders
ums.jwt.bearer.allowUriQueryParameter Boolean false 是否支持从 uri query parameter 传递参数名称为 bearerTokenParameterName bearer token, 默认: false 注意: 属性 allowFormEncodedBodyParameter, allowUriQueryParameter 只能是其中一个值为 true, 表示使用 bearerTokenParameterName 的值, bearerTokenHeaderName 失效; 两个值为 false 时表示使用 bearerTokenHeaderName 的值, bearerTokenParameterName 失效. true/false
ums.jwt.bearer.allowFormEncodedBodyParameter Boolean false 是否支持从 form encoded body parameter 传递参数名称为 bearerTokenParameterName bearer token 或传递参数名称为refreshTokenParameterName refresh token, 默认: false 注意: 1. 属性 allowFormEncodedBodyParameter, allowUriQueryParameter 只能是其中一个值为 true, 表示使用 bearerTokenParameterName 的值, bearerTokenHeaderName 失效; 2. 两个值为 false 时表示使用 bearerTokenHeaderName 的值, bearerTokenParameterName 失效. 3. 此属性也控制认证成功后 jwt refresh token 返回的方式, false 表示从 header 中返回, true 表示 json 返回. 4. 当启用通过 request form 来传递 JWT 时会带来很多局限性, 前端只能通过 org.springframework.http.HttpMethod.POST 来访问需要权限的 API; 一般情况下请保持此默认值, 通过请求头传递. true/false
Jwt blacklist jti 缓存(用于 refreshToken), 以及 jwt 黑名单缓存属性(旧 jwt 失效引发的并发访问问题).
ums.jwt.blacklist.enable Boolean true 是否支持 jwt 黑名单功能, 默认: true. 如果为 false, jwtToken refreshToken 会保存到 redis true/false
ums.jwt.blacklist.reAuthPrefix String JWT:REAUTH: 是否需要重新登录认证的redis key前缀, 默认: JWT:REAUTH:
ums.jwt.blacklist.tokenInfoPrefix String JWT:tokenInfo: 用于存储用户 Token 信息的前缀, 也可以理解为用户信息, 后面回添加 Jwt jti, 默认: JWT:tokenInfo:
ums.jwt.blacklist.refreshTokenPrefix String JWT:refreshToken: JWT refresh token 缓存前缀, 默认: JWT:refreshToken:
ums.jwt.blacklist.refreshTokenTtl Duration PT720H JWT refresh token ttl(有效期), 默认: 30 天
ums.jwt.blacklist.blacklistPrefix String JWT:BLACKLIST: JWT 黑名单缓存前缀, 默认: JWT:BLACKLIST:

RBAC 权限访问控制配置属性

属性 类型 默认值 描述 可选项
ums.rbac.roleHierarchy List 用户角色层级配置,默认为 空. 分隔符为:" > ". 例如: ROLE_ADMIN 拥有 ROLE_USER 权限则表示为: ROLE_ADMIN > ROLE_USER > ROLE_EMPLOYEE 注意:
// ROLE_ADMIN 拥有 ROLE_USER 与 ROLE_EMPLOYEE 权限, ROLE_USER 拥有 ROLE_EMPLOYEE 权限.
ROLE_ADMIN > ROLE_USER > ROLE_EMPLOYEE
// 等价于
ROLE_ADMIN > ROLE_USER
ROLE_USER > ROLE_EMPLOYEE
ums.rbac.accessDenyPage String 403 页面, 默认 空
ums.rbac.accessExp String isAuthenticated() 权限表达式, 当 enableRestfulApi=false 或者有 @EnableGlobalMethodSecurity 注释时生效, 默认为 isAuthenticated().
String accessExp = "isAuthenticated()";
// 配置等效与
httpSecurity.authorizeRequests().anyRequest().access(isAuthenticated());
ums.rbac.restfulAccessExp String hasPermission(request, authentication) 权限表达式, 当 enableRestfulApi=true 且没有 @EnableGlobalMethodSecurity 注释时生效, 默认为 hasPermission(request, authentication). hasPermission 表达式默认实现为 UriAuthoritiesPermissionEvaluator, 想自定义逻辑, 实现 PermissionEvaluator 即可替换.
String accessExp = "hasPermission(request, authentication)";
// 配置等效与
httpSecurity.authorizeRequests().anyRequest().access(hasPermission(request, authentication));
ums.rbac.enableRestfulApi Boolean true 是否支持 restful Api (前后端交互接口的风格; 如: 查询(GET),添加(POST),修改(PUT),删除(DELETE)), 默认: true. 当 enableRestfulApi=falseaccessExp 权限表达式生效, 当 enableRestfulApi=truerestfulAccessExp 权限表达式生效. true/false

基于 SLF4J MDC 机制的日志链路追踪配置属性

属性 类型 默认值 描述 可选项
ums.mdc.enabled Boolean true 是否支持基于 SLF4J MDC 机制日志的链路追踪, 默认: true true/false
ums.mdc.type MdcIdType UUID 基于 SLF4J MDC 机制实现日志链路追踪 id 的类型, 默认为 uuid. 当需要自定义 id 时, type = MdcIdType.CUSTOMIZE_ID, 再实现 MdcIdGenerator.getMdcId() 方法, 注入 IOC 容器即可. UUID/THREAD_ID/SESSION_ID/CUSTOMIZE_ID
ums.mdc.includeUrls List /** 需要添加 MDC 日志的链路追踪的 url, 默认: /**, 并在日志文件的 pattern 中添加 %X{MDC_TRACE_ID}
ums.mdc.excludeUrls List 不需要 MDC 日志的链路追踪的 url, 如: 静态路径

基本属性

属性 类型 默认值 描述 可选项
ums.client.topDomain String 一级域名(不包括二级域名) 例如:
domain: www.example.com -> topDomain: example.com<br/> domain: www.example.com.cn -> topDomain: example.com.cn<br/> domain: aaa.bbb.example.net -> topDomain: example.net<br/> 测试时用的 IP localhost 直接原样设置就行. 在应用启动时通过 SecurityAutoConfiguration 自动注入 MvcUtil 字段 topDomain 中. 如在设置跨域 cookie 时可以通过 MvcUtil.getTopDomain() 方法获取.
ums.client.loginPage String /login(必须自己实现) 设置登录页
ums.client.loginProcessingUrl String /authentication/form 设置处理登录表单的 uri,不需要用户实现此 uri,由 Spring security 自动实现,
ums.client.failureUrl String /login(必须自己实现) 设置认证失败默认跳转页面
ums.client.successUrl String /(必须自己实现) 设置认证成功默认跳转页面
ums.client.alwaysUseDefaultTargetUrl Boolean false 登录后是否总是使用默认的 successUrl 进行跳转, 默认为: false true/false
ums.client.ignoringUrls String[] 不需要认证的静态资源 urls
ums.client.permitUrls Set 不需要认证的 uri(可以带 HttpMethod 后缀; 用:隔开), 例如: /user/**/user/**:post, 默认为 空 Set. 支持通配符 规则具体看 AntPathMatcher.match(pattern, path) Example Usage:
Set<String> permitUrls = Set.of("/user/**:post");<br/> //equivalent to :<br/> httpSecurity.authorizeRequests().antMatchers(HttpMethod.POST, "/user/**").permitAll();
// 如果没有带 HttpMethod 后缀:
Set<String> permitUrls = Set.of("/user/**");<br/> //equivalent to :<br/> httpSecurity.authorizeRequests().antMatchers("/user/**").permitAll();
ums.client.openAuthenticationRedirect Boolean false 是否开启登录路由功能, 根据不同的uri跳转到相对应的登录页, 默认为: false, 当为 true 时还需要配置 loginUnAuthenticationRoutingUrlauthRedirectSuffixCondition true/false
ums.client.loginUnAuthenticationRoutingUrl String /authentication/require 当请求需要身份认证时,默认跳转的url, 当 openAuthenticationRedirect = true 时生效. 会根据 authJumpSuffixCondition 条件判断的认证处理类型的 url
ums.client.authRedirectSuffixCondition List 设置 uri 相对应的跳转登录页, 例如:``key=/user/: value=/login.html, 用等号隔开key与value, 如: /user/=/login.html, 默认为空. 当 openAuthenticationRedirect = true` 时生效. 支持通配符 规则具体看 `AntPathMatcher.match(pattern, path)`
ums.client.loginProcessType LoginProcessType JSON 设置登录后返回格式, REDIRECT/JSON
ums.client.logoutUrl String /logout 设置登出 url
ums.client.logoutSuccessUrl String /login(必须自己实现) 设置登出后跳转的 url
ums.client.targetUrlParameter String redirectTargetUrl 设置由客户端决定认证成功要跳转的 url 的 request 参数名称
ums.client.usernameParameter String username 设置登录时用户名的 request 参数名称
ums.client.passwordParameter String password 设置登录时用户密码的 request 参数名称
ums.client.useReferer Boolean true 登录后是否利用 Referer 进行跳转 true/false
ums.client.sameOrigin Boolean false 允许来自同一来源(如: example.com)的 X-Frame-Options headers 请求 true/false
ums.client.suppressReflectWarning Boolean false 抑制反射警告, 支持 JDK11, 默认: false , 在确认 WARNING: An illegal reflective access operation has occurred 安全后, 可以打开此设置, 可以抑制反射警告. true/false
SESSION
ums.client.session.sessionNumberControl Boolean false 当为 false 时允许单个用户拥有任意数量的 session(不同设备或不同浏览器),默认为 false。 当设置 true 时,同时请设置一下选项:maximumSessions 和 maxSessionsPreventsLogin true/false
ums.client.session.maximumSessions Integer 1 当设置为 1 时,maxSessionsPreventsLogin 为 false 时,同个用户登录会自动踢掉上一次的登录状态。 当设置为 1 时,maxSessionsPreventsLogin=true 时,同个用户登录会自动自动拒绝用户再登录。 默认为 1。 如要此选项生效,sessionNumberControl 必须为 true
ums.client.session.maxSessionsPreventsLogin Boolean false 同个用户达到最大 maximumSession 后,当为 true 时自动拒绝用户再登录,当为 false 时自动踢掉上一次的登录状态, 默认为 false。 如要此选项生效,``sessionNumberControl` 必须为 true true/false
ums.client.session.enableSessionUrlRewriting Boolean false If set to true, allows HTTP sessions to be rewritten in the URLs when using HttpServletResponse.encodeRedirectURL(String) or HttpServletResponse.encodeURL(String), otherwise disallows HTTP sessions to be included in the URL. This prevents leaking information to external domains. true/false
ums.client.session.sessionCreationPolicy SessionCreationPolicy ALWAYS Specifies the various session creation policies for Spring Security. ALWAYS/NEVER/IF_REQUIRED/STATELESS
ums.client.session.forwardOrRedirect Boolean true 无效 session 处理请求的方式: true 表示创建新的 session 并转发, false 表示重定向(invalidSessionUrl). 默认: true, 注意: 必须手动配置属性, InvalidSessionStrategy 依赖此配置加载. true/false
ums.client.session.invalidSessionUrl String /session/invalid session 失效后跳转地址, loginProcessType=redirect 时有效. 注意: forwardOrRedirect false 时有效.
ums.client.session.invalidSessionOfConcurrentUrl String /(必须自己实现) concurrent session 失效后跳转地址, loginProcessType=redirect 时有效.
ums.client.session.sessionCookieName String JSESSIONID session 的 cookie name, 默认为: JSESSIONID, , 需要与 server.servlet.session.cookie.name 同时设置
rememberMe
ums.client.rememberMe.enable Boolean false RememberMe 是否开启, 默认为 false; true/false
ums.client.rememberMe.rememberMeTimeout Duration P14D 设置记住我功能的 session 的缓存时长,默认 14 天. If a duration suffix is not specified, seconds will be used.
ums.client.rememberMe.rememberMeCookieName String REMEMBER_ME 设置记住我功能的 CookieName, 自定义 RememberMeServices 时, 此配置失效
ums.client.rememberMe.rememberMeParameter String REMEMBER_ME 设置记住我功能的参数名称,
ums.client.rememberMe.useSecureCookie Boolean false Whether the cookie should be flagged as secure or not. Secure cookies can only be sent over an HTTPS connection and thus cannot be accidentally submitted over HTTP where they could be intercepted. By default the cookie will be secure if the request is secure. If you only want to use remember-me over HTTPS (recommended) you should set this property to true true/false
csrf
ums.client.csrf.csrfIsOpen Boolean false csrf 是否开启, 默认为 false; true/false
ums.client.csrf.ignoringAntMatcherUrls Set 忽略指定请求的 CSRF 防护, 默认为 空 Set
ums.client.csrf.tokenRepositoryType CsrfTokenRepositoryType SESSION csrf tokenRepository 的存储类型, 默认为 session SESSION/REDIS
anonymous
ums.client.anonymous.anonymousIsOpen Boolean true ANONYMOUS 是否开启, 默认为 true true/false
ums.client.anonymous.principal String ANONYMOUS 匿名用户名称, 默认为 ANONYMOUS
ums.client.anonymous.authorities List ROLE_ANONYMOUS 匿名用户权限 list, 默认为 ROLE_ANONYMOUS
跨域
ums.client.cors.enable Boolean false 是否支持跨域, 默认为 false true/false
ums.client.cors.accessControlAllowOrigin List 允许跨域访问的域,可以是一个域的列表,也可以是通配符 "*" 。这里要注意Origin规则只对域名有效,并不会对子目录有效。
ums.client.cors.accessControlAllowCredentials Boolean true 是否允许请求带有验证信息, 当为 true 时, accessControlAllowOrigin 不能为 "*", 默认为 true true/false
ums.client.cors.accessControlExposeHeaders List 进行跨区请求允许曝露的 headers,请求成功后,ajax 可以在 XMLHttpRequest 中访问这些头的信息; 注意: 不支持 *.
ums.client.cors.accessControlMaxAge Duration 缓存此次请求的秒数。在这个时间范围内,所有同类型的请求都将不再发送预检请求而是直接使用此次返回的头作为判断依据,非常有用,大幅优化请求次数
ums.client.cors.accessControlAllowMethods List 允许进行跨区请求的请求方法
ums.client.cors.accessControlAllowHeaders List Set the list of headers that a pre-flight request can list as allowed for use during an actual request. The special value "*" allows actual requests to send any header. A header name is not required to be listed if it is one of: Cache-Control, Content-Language, Expires, Last-Modified, or Pragma. By default this is not set.
ums.client.cors.urlList List 允许进行跨区请求的 url, 支持通配符.

签到属性

属性 类型 默认值 描述 可选项
ums.sign.signKeyPrefix String u:sign: 用于 redis 签到 key 前缀,默认为: u:sign:
ums.sign.totalSignKeyPrefix String total:sign: 用于 redis 总签到 key 前缀,默认为: total:sign:
ums.sign.charset String UTF-8 redis key(String) 转 byte[] 转换时所用的 charset
ums.sign.lastFewDays Integer 7 获取最近几天的签到情况, 不能大于 28 天, 默认为 7 天
ums.sign.userExpired Long 2678400L 用户签到 redis key TTL, 默认: 二个月 , 单位: 秒
ums.sign.totalExpired Long 5356800L 用户签到统计 redis key TTL, 默认: 二个月 , 单位: 秒

手机登录属性

属性 类型 默认值 描述 可选项
ums.mobile.login.loginProcessingUrlMobile String /authentication/mobile 手机验证码登录请求处理url, 默认 /authentication/mobile
ums.mobile.login.smsCodeLoginIsOpen Boolean false 手机验证码登录是否开启, 默认 false true/false

验证码属性

属性 类型 默认值 描述 可选项
ums.codes.validateCodeUrlPrefix String /code 获取验证码的 url 的前缀, 默认: /code
ums.codes.validateCodeCacheType ValidateCodeCacheType SESSION 验证码缓存类型, 默认: SESSION, 可选: REDIS/SESSION REDIS/SESSION
ums.codes.refreshValidateCodeJobCron String "0 * 4 * * ?" A cron-like expression.
0 * 4 * * ? 分别对应: second/minute/hour/day of month/month/day of week

默认为: "0 * 4 * * ?", 凌晨四点
ums.codes.enableRefreshValidateCodeJob Boolean false 是否支持定时刷新 validateCodeJob 定时任务, 考虑到很多应用都有自己的定时任务应用, 默认: false. RefreshValidateCodeCacheJob 接口的实现已注入 IOC 容器, 方便自定义定时任务接口时调用. true/false
ums.codes.totalImages Integer 100 定时刷新 validateCodeJob 任务时, 需要缓存的验证码图片数. 默认: 100; 注意: 这里为了方便开发而设置的值, 生产环境根据情况直接设置
image
ums.codes.image.width Integer 270 图片验证码的宽度,默认 270; 宽度如果小于 height * 45 / 10, 则 width = height * 45 / 10
ums.codes.image.height Integer 60 图片验证码的高度,默认 60
ums.codes.image.length Integer 4 验证码的验证码长度,默认 4位
ums.codes.image.expire Integer 300 验证码的有效时间,默认 300秒
ums.codes.image.requestParamImageCodeName String imageCode 提交图片验证码请求时,请求中带的图片验证码变量名,默认 imageCode
ums.codes.image.imageCacheDirectory String classpath:static/image/code 缓存图片验证码目录,默认 classpath:static/image/code, 不以 "classpath:" 开头时即认为是绝对路径, 以 "classpath:" 开头时即认为是基于 classpath 的相对路径.
ums.codes.image.authUrls List /authentication/form 设置需要图片验证码认证的 uri(必须是非 GET 请求),多个 uri 用 “-” 或 ","号分开支持通配符,如:/hello,/user/*;默认为 /authentication/form
sms
ums.codes.sms.private Integer length = 6; Integer 6 验证码的验证码长度,默认 6 位
ums.codes.sms.expire Integer 120 验证码的有效时间,默认 120秒
ums.codes.sms.requestParamSmsCodeName String smsCode 提交短信验证码请求时,请求中带的短信验证码变量名,默认 smsCode
ums.codes.sms.requestParamMobileName String mobile 提交短信验证码请求时,请求中带的手机号变量名,默认 mobile
ums.codes.sms.authUrls List
slider
ums.codes.slider.authUrls List 设置需要验证码认证的 uri(必须是非 GET 请求),多个 uri 用 “-” 或 ","号分开支持通配符,如:/hello,/user/*;默认为 空
ums.codes.slider.sliderCheckUrl String /slider/check 设置滑块验证码校验证的 uri, 默认: /slider/check
ums.codes.slider.requestParamName String sliderCode 提交验证码请求时,请求中带的验证码变量名,默认 sliderCode. 用于滑块验证码第二次校验的参数名称.
ums.codes.slider.tokenRequestParamName String sliderToken request token param name, 默认: sliderToken.
ums.codes.slider.xRequestParamName String x request X param name, 默认: x.
ums.codes.slider.yRequestParamName String y request Y param name, 默认: y.
ums.codes.slider.expire Integer 180 滑块验证码默认过期时间, 180 秒
ums.codes.slider.redundancyValue Integer 3 校验 SliderCode.getLocationX() 时的允许的差异值: 默认: 3 PX
ums.codes.slider.grayscale Integer 5 在模板上抠图区灰阶等级: 4-10, 数值越高, 灰色越深, 默认: 5
ums.codes.slider.imageSuffix String png 模板图片与原始图片的图片后缀, 默认: png
ums.codes.slider.originalImageDirectory String classpath:static/image/slider/original 原始图片目录,默认 classpath:static/image/slider/original, 不以 "classpath:"开头时即认为是绝对路径, 以"classpath:"开头时即认为是基于classpath` 的相对路径.
ums.codes.slider.templateImageDirectory String classpath:static/image/slider/template 模板图片目录, 模板图片必须符合: 模板图片的宽 * 3 < 原始图片的宽, 且 模板图片的高 *2 < 原始图片的高; 背景必须是白色, 默认 classpath:static/image/slider/template, 不以 "classpath:" 开头时即认为是绝对路径, 以 "classpath:" 开头时即认为是基于 classpath 的相对路径.
ums.codes.slider.codeImageDirectory String classpath:static/image/slider/code 根据原始图片生成的滑块图片目录,用于自定义缓存滑块图片的存储目录, 默认 classpath:static/image/slider/code, 不以 "classpath:" 开头时即认为是绝对路径, 以 "classpath:" 开头时即认为是基于 classpath的相对路径.
track
ums.codes.track.authUrls List 设置需要验证码认证的 uri(必须是非 GET 请求),多个 uri 用 “-” 或 ","号分开支持通配符,如:/hello,/user/*;默认为 空
ums.codes.track.requestParamName String trackCode 提交验证码请求时,请求中带的验证码变量名
ums.codes.image.expire Integer 300 验证码的有效时间,默认 180秒
selection
ums.codes.selection.authUrls List 设置需要验证码认证的 uri(必须是非 GET 请求),多个 uri 用 “-” 或 ","号分开支持通配符,如:/hello,/user/*;默认为 空
ums.codes.selection.requestParamName String selectionCode 提交验证码请求时,请求中带的验证码变量名
ums.codes.image.expire Integer 300 验证码的有效时间,默认 180秒
customize
ums.codes.customize.authUrls List 设置需要验证码认证的 uri(必须是非 GET 请求),多个 uri 用 “-” 或 ","号分开支持通配符,如:/hello,/user/*;默认为 空
ums.codes.customize.requestParamName String customizeCode 提交验证码请求时,请求中带的验证码变量名
ums.codes.image.expire Integer 300 验证码的有效时间,默认 180秒

OAuth2 / refreshToken 定时任务 / JustAuth 配置属性

属性 类型 默认值 描述 可选项
ums.oauth.enabled Boolean 是否支持第三方授权登录功能, 默认: 空, 必须明确配置是否支持 true/false
ums.oauth.autoSignUp Boolean true 第三方授权登录后如未注册用户是否支持自动注册功能, 默认: true true/false
ums.oauth.signUpUrl String /signUp.html 第三方授权登录后如未注册用户不支持自动注册功能, 则跳转到此 url 进行注册逻辑, 此 url 必须开发者自己实现; 默认: /signUp.html; 例如: 1. 设置值 "/signUp", 则跳转指定到 "/signUp" 进行注册. 2. 想返回自定义 json 数据到前端, 这里要设置 为空 , 在 Auth2LoginAuthenticationFilter 设置的 AuthenticationSuccessHandler 上处理返回 json; 判断是否为临时用户的条件是: Authentication.getPrincipal() 是否为 TemporaryUser 类型.
ums.oauth.temporaryUserPassword String "" 用于第三方授权登录时, 未开启自动注册且用户是第一次授权登录的临时用户密码, 默认为: "". 注意: 生产环境更换密码
ums.oauth.temporaryUserAuthorities String "ROLE_TEMPORARY_USER" 用于第三方授权登录时, 未开启自动注册且用户是第一次授权登录的临时用户的默认权限, 多个权限用逗号分开, 默认为: "ROLE_TEMPORARY_USER"
ums.oauth.domain String http://127.0.0.1 第三方登录回调的域名, 例如:https://localhost 默认为 "http://127.0.0.1", redirectUrl 直接由 {domain}/{servletContextPath}/{redirectUrlPrefix}/{providerId}(ums.oauth.[qq/gitee/weibo])组成
ums.oauth.redirectUrlPrefix String /oauth/login 第三方登录回调处理 url 前缀 ,也就是 RedirectUrl 的前缀, 不包含 ServletContextPath,默认为 /oauth/login
ums.oauth.authLoginUrlPrefix String /oauth/authorization 第三方登录授权登录 url 前缀, 不包含 ServletContextPath,默认为 /oauth/authorization
ums.oauth.temporaryUserAuthorities String ROLE_USER 第三方授权登录成功后的默认权限, 多个权限用逗号分开, 默认为: "ROLE_USER"
ums.oauth.enableUserConnectionAndAuthTokenTable Boolean true 是否支持内置的第三方登录用户表(user_connection) 和 第三方登录 token 表(auth_token). 默认: true. 注意: 如果为 false, 则必须重新实现 ConnectionService 接口. true/false
ums.oauth.enableAuthTokenTable Boolean true 是否支持内置的第三方登录 token 表(auth_token). 默认: true. true/false
refreshToken 定时任务
ums.oauth.refreshTokenJobCron String 0 * 2 * * ? A cron-like expression.
0 * 2 * * ? 分别对应: second/minute/hour/day of month/month/day of week

默认为: "0 * 2 * * ?", 凌晨 2 点启动定时任务, 支持分布式(分布式 IOC 容器中必须有 RedisConnectionFactory, 也就是说, 是否分布式执行依据 IOC 容器中是否有 RedisConnectionFactory)
ums.oauth.enableRefreshTokenJob Boolean false 是否支持定时刷新 AccessToken 定时任务, 考虑到很多应用都有自己的定时任务应用, 默认: false. RefreshTokenJob 接口的实现已注入 IOC 容器, 方便自定义定时任务接口时调用. 支持分布式(分布式 IOC 容器中必须有 RedisConnectionFactory, 也就是说, 是否分布式执行依据 IOC 容器中是否有 RedisConnectionFactory) true/false
ums.oauth.batchCount Integer 1000 定时刷新 accessToken 任务时, 批处理数据库的记录数. 注意: 分布式应用时, 此配置不同服务器配置必须是一样的. batchCount 大小需要根据实际生产环境进行优化
ums.oauth.remainingExpireIn Integer 24 accessToken 的剩余有效期内进行刷新 accessToken, 默认: 24, 单位: 小时. 注意: 需要根据实际生产环境进行优化
justAuth
ums.oauth.justAuth.ignoreCheckState Boolean false 忽略校验 state 参数,默认不开启。当 ignoreCheckState 为 true 时, me.zhyd.oauth.request.AuthDefaultRequest.login(AuthCallback) 将不会校验 state 的合法性。
使用场景:当且仅当使用自实现 state 校验逻辑时开启
以下场景使用方案仅作参考: 1. 授权、登录为同端,并且全部使用 JustAuth 实现时,该值建议设为 false; 2. 授权和登录为不同端实现时,比如前端页面拼装 authorizeUrl,并且前端自行对state进行校验, 后端只负责使用code获取用户信息时,该值建议设为 true; 如非特殊需要,不建议开启这个配置
该方案主要为了解决以下类似场景的问题:
true/false
ums.oauth.justAuth.timeout Duration PT180S 默认 state 缓存过期时间:3分钟(PT180S) 鉴于授权过程中,根据个人的操作习惯,或者授权平台的不同(google等),每个授权流程的耗时也有差异,不过单个授权流程一般不会太长 本缓存工具默认的过期时间设置为3分钟,即程序默认认为3分钟内的授权有效,超过3分钟则默认失效,失效后删除
ums.oauth.justAuth.cacheType StateCacheType SESSION JustAuth state 缓存类型, 默认 session DEFAULT/SESSION/REDIS
ums.oauth.justAuth.cacheKeyPrefix String JUST_AUTH: JustAuth state 缓存 key 前缀
proxy
ums.oauth.proxy.enable Boolean false 是否支持代理, 默认为: false. 当为 false 时, 其他属性都失效. true/false
ums.oauth.proxy.proxy Proxy.Type HTTP 针对国外服务可以单独设置代理类型, 默认 Proxy.Type.HTTP HTTP/DIRECT/SOCKS
ums.oauth.proxy.hostname String 代理 host, enable = true 时生效.
ums.oauth.proxy.port Integer 代理端口, enable = true 时生效.
ums.oauth.proxy.timeout Duration PT3S 代理超时, 默认 PT3S
ums.oauth.proxy.foreignTimeout Duration PT15S 用于国外网站代理超时, 默认 PT15S
github
ums.oauth.github.clientId String client Id
ums.oauth.github.clientSecret String client Secret
ums.oauth.github.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
weibo
ums.oauth.weibo.clientId String client Id
ums.oauth.weibo.clientSecret String client Secret
ums.oauth.weibo.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
gitee
ums.oauth.gitee.clientId String client Id
ums.oauth.gitee.clientSecret String client Secret
ums.oauth.gitee.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
dingtalk
ums.oauth.dingtalk.clientId String client Id
ums.oauth.dingtalk.clientSecret String client Secret
baidu
ums.oauth.baidu.clientId String client Id
ums.oauth.baidu.clientSecret String client Secret
ums.oauth.baidu.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
coding
ums.oauth.coding.clientId String client Id
ums.oauth.coding.clientSecret String client Secret
ums.oauth.coding.codingGroupName String 使用 Coding 登录时,需要传该值。
团队域名前缀,比如以“ https://justauth.coding.net/ ”为例,``codingGroupName = justauth`
ums.oauth.coding.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
oschina
ums.oauth.oschina.clientId String client Id
ums.oauth.oschina.clientSecret String client Secret
alipay
ums.oauth.alipay.clientId String client Id
ums.oauth.alipay.clientSecret String client Secret
ums.oauth.alipay.alipayPublicKey String 支付宝公钥:当选择支付宝登录时,该值可用 对应“RSA2(SHA256)密钥”中的“支付宝公钥”
ums.oauth.alipay.proxyHost String 支付宝: 支付宝有自己的代理, 默认代理对支付宝不生效, 代理主机:
ums.oauth.alipay.proxyPort Integer 支付宝: 支付宝有自己的代理, 默认代理对支付宝不生效, 代理端口:
qq
ums.oauth.qq.clientId String client Id
ums.oauth.qq.clientSecret String client Secret
ums.oauth.qq.unionId String 是否需要申请 unionId,默认: false. 目前只针对qq登录 注:qq授权登录时,获取 unionId 需要单独发送邮件申请权限。如果个人开发者账号中申请了该权限,可以将该值置为true,在获取openId时就会同步获取unionId 参考链接:http://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D
ums.oauth.qq.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
wechatOpen
ums.oauth.wechatOpen.clientId String client Id
ums.oauth.wechatOpen.clientSecret String client Secret
wechatMp
ums.oauth.wechatMp.clientId String client Id
ums.oauth.wechatMp.clientSecret String client Secret
ums.oauth.wechatMp.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
taobao
ums.oauth.taobao.clientId String client Id
ums.oauth.taobao.clientSecret String client Secret
ums.oauth.taobao.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
google
ums.oauth.google.clientId String client Id
ums.oauth.google.clientSecret String client Secret
ums.oauth.google.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
facebook
ums.oauth.facebook.clientId String client Id
ums.oauth.facebook.clientSecret String client Secret
ums.oauth.facebook.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
github
ums.oauth.github.clientId String client Id
ums.oauth.github.clientSecret String client Secret
ums.oauth.github.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
douyin
ums.oauth.douyin.clientId String client Id
ums.oauth.douyin.clientSecret String client Secret
linkedin
ums.oauth.linkedin.clientId String client Id
ums.oauth.linkedin.clientSecret String client Secret
ums.oauth.linkedin.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
microsoft
ums.oauth.microsoft.clientId String client Id
ums.oauth.microsoft.clientSecret String client Secret
ums.oauth.microsoft.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
mi
ums.oauth.mi.clientId String client Id
ums.oauth.mi.clientSecret String client Secret
ums.oauth.mi.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
toutiao
ums.oauth.toutiao.clientId String client Id
ums.oauth.toutiao.clientSecret String client Secret
teambition
ums.oauth.teambition.clientId String client Id
ums.oauth.teambition.clientSecret String client Secret
renren
ums.oauth.renren.clientId String client Id
ums.oauth.renren.clientSecret String client Secret
ums.oauth.renren.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
pinterest
ums.oauth.pinterest.clientId String client Id
ums.oauth.pinterest.clientSecret String client Secret
ums.oauth.pinterest.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
stackOverflow
ums.oauth.stackOverflow.clientId String client Id
ums.oauth.stackOverflow.clientSecret String client Secret
ums.oauth.stackOverflow.stackOverflowKey String Stack Overflow Key
ums.oauth.stackOverflow.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
huawei
ums.oauth.huawei.clientId String client Id
ums.oauth.huawei.clientSecret String client Secret
ums.oauth.huawei.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
wechatEnterprise 企业微信二维码版
ums.oauth.wechatEnterprise.clientId String client Id
ums.oauth.wechatEnterprise.clientSecret String client Secret
ums.oauth.wechatEnterprise.agentId String 企业微信,授权方的网页应用ID
kujiale
ums.oauth.kujiale.clientId String client Id
ums.oauth.kujiale.clientSecret String client Secret
ums.oauth.kujiale.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
gitlab
ums.oauth.gitlab.clientId String client Id
ums.oauth.gitlab.clientSecret String client Secret
ums.oauth.gitlab.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
meituan
ums.oauth.meituan.clientId String client Id
ums.oauth.meituan.clientSecret String client Secret
eleme
ums.oauth.eleme.clientId String client Id
ums.oauth.eleme.clientSecret String client Secret
twitter
ums.oauth.twitter.clientId String client Id
ums.oauth.twitter.clientSecret String client Secret
jd
ums.oauth.jd.clientId String client Id
ums.oauth.jd.clientSecret String client Secret
ums.oauth.jd.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
aliyun
ums.oauth.aliyun.clientId String client Id
ums.oauth.aliyun.clientSecret String client Secret
feishu
ums.oauth.feishu.clientId String client Id
ums.oauth.feishu.clientSecret String client Secret
xmly 喜马拉雅
ums.oauth.xmly.clientId String client Id
ums.oauth.xmly.clientSecret String client Secret
ums.oauth.xmly.deviceId String 喜马拉雅:设备ID, 设备唯一标识ID
ums.oauth.xmly.clientOsType Integer 喜马拉雅:客户端操作系统类型,1-iOS系统,2-Android系统,3-Web
ums.oauth.xmly.packId String 喜马拉雅:客户端包名,如果 AuthConfig#getClientOsType() 为1或2时必填。对Android客户端是包名,对IOS客户端是Bundle ID
wechatEnterpriseWeb 企业微信网页版
ums.oauth.wechatEnterpriseWeb.clientId String client Id
ums.oauth.wechatEnterpriseWeb.clientSecret String client Secret
ums.oauth.wechatEnterpriseWeb.agentId String 企业微信,授权方的网页应用ID
ums.oauth.wechatEnterpriseWeb.scopes List 支持自定义授权平台的 scope 内容, 格式参考对应的 AuthScope.getScope() 的子类. 注意: 会自动添加默认的 scope 设置.
customize
ums.oauth.customize.clientId String client Id
ums.oauth.customize.clientSecret String client Secret
ums.oauth.customize.customizeProviderId String 自定义第三方授权登录, 当 Auth2Properties#customize 时有效, 此字段必须以驼峰方式命名. 比如此字段的值为 umsCustomize, 那么 /auth2/authorization/customize 会替换为 /auth2/authorization/umsCustomize
ums.oauth.customize.customizeIsForeign Boolean false 自定义第三方授权登录, 当 Auth2Properties#customize 时有效, 设置第三方是否在国外, 默认: false. 如果为 false 时, 设置 HttpConfig 的超时时间为 ums.oauth.proxy.timeout 的值. 如果为 true 时, 设置 HttpConfig 的超时时间为 ums.oauth.proxy.foreignTimeout 的值. true/false
gitlabPrivate
ums.oauth.gitlabPrivate.clientId String client Id
ums.oauth.gitlabPrivate.clientSecret String client Secret

线程池属性

属性 类型 默认值 描述 可选项
jobTaskScheduledExecutor 定时任务时的 Executor 属性 注意: 需要根据实际生产环境进行优化
ums.executor.jobTaskScheduledExecutor.corePoolSize Integer 0 线程池中空闲时保留的线程数, 默认: 0
ums.executor.jobTaskScheduledExecutor.keepAliveTime Integer 10 keep alive time, 默认: 10
ums.executor.jobTaskScheduledExecutor.timeUnit TimeUnit TimeUnit.MILLISECONDS keepAliveTime 时间单位, 默认: 毫秒 MILLISECONDS/MICROSECONDS/MILLISECONDS/SECONDS/MINUTES/HOURS/DAYS
ums.executor.jobTaskScheduledExecutor.poolName String accessTokenJob 线程池名称, 默认: accessTokenJob
ums.executor.jobTaskScheduledExecutor.rejectedExecutionHandlerPolicy RejectedExecutionHandlerPolicy ABORT 拒绝策略, 默认: ABORT ABORT/CALLER_RUNS/DISCARD_OLDEST/DISCARD
ums.executor.jobTaskScheduledExecutor.executorShutdownTimeout Duration PT10S 线程池关闭过程的超时时间, 默认: PT10S
refreshToken 更新第三方授权登录用户的 accessToken 的执行逻辑, 向本地数据库 auth_token 表获取过期或在一定时间内过期的 token 记录, 用 refreshToken 向第三方服务商更新 accessToken 信息的 Executor 属性, 注意: 定时刷新 accessToken 的执行逻辑是多线程的, 需要根据实际生产环境进行优化
ums.executor.refreshToken.corePoolSize Integer 0 线程池中空闲时保留的线程数, 默认: 0
ums.executor.refreshToken.maximumPoolSize Integer Runtime.getRuntime().availableProcessors() 最大线程数, 默认: 本机核心数
ums.executor.refreshToken.keepAliveTime Integer 5 keep alive time, 默认: 5
ums.executor.refreshToken.timeUnit TimeUnit TimeUnit.SECONDS keepAliveTime 时间单位, 默认: 秒 MILLISECONDS/MICROSECONDS/MILLISECONDS/SECONDS/MINUTES/HOURS/DAYS
ums.executor.refreshToken.blockingQueueCapacity Integer maximumPoolSize * 2 blocking queue capacity, 默认: maximumPoolSize * 2
ums.executor.refreshToken.poolName String refreshToken 线程池名称, 默认: refreshToken
ums.executor.refreshToken.rejectedExecutionHandlerPolicy RejectedExecutionHandlerPolicy CALLER_RUNS 拒绝策略, 默认: CALLER_RUNS 注意: 一般情况下不要更改默认设置, 没有实现 RefreshToken 逻辑被拒绝执行后的处理逻辑, 除非自己实现RefreshTokenJob.refreshTokenJob() 对 RefreshToken 逻辑被拒绝执行后的处理逻辑. ABORT/CALLER_RUNS/DISCARD_OLDEST/DISCARD
ums.executor.refreshToken.executorShutdownTimeout Duration PT10S 线程池关闭过程的超时时间, 默认: PT10S
updateConnection 第三方授权登录时, 异步更新用户的第三方授权用户信息与 token 信息的 Executor 属性, 注意: 第三方授权登录时是异步更新第三方用户信息与 token 信息到本地数据库时使用此配置, 需要根据实际生产环境进行优化
ums.executor.updateConnection.corePoolSize Integer 5 线程池中空闲时保留的线程数, 默认: 5
ums.executor.updateConnection.maximumPoolSize Integer Runtime.getRuntime().availableProcessors() 最大线程数, 默认: 本机核心数
ums.executor.updateConnection.keepAliveTime Integer 10 keep alive time, 默认: 10
ums.executor.updateConnection.timeUnit TimeUnit TimeUnit.SECONDS keepAliveTime 时间单位, 默认: 秒 MILLISECONDS/MICROSECONDS/MILLISECONDS/SECONDS/MINUTES/HOURS/DAYS
ums.executor.updateConnection.blockingQueueCapacity Integer maximumPoolSize * 2 blocking queue capacity, 默认: maximumPoolSize * 2
ums.executor.updateConnection.poolName String updateConnection 线程池名称, 默认: updateConnection
ums.executor.updateConnection.rejectedExecutionHandlerPolicy RejectedExecutionHandlerPolicy CALLER_RUNS 拒绝策略, 默认: CALLER_RUNS 注意: 一般情况下不要更改默认设置, 除非自己实现Auth2LoginAuthenticationProvider更新逻辑; 改成 ABORT 也支持, 默认实现 Auth2LoginAuthenticationProvider 是异步更新被拒绝执行后, 会执行同步更新. ABORT/CALLER_RUNS/DISCARD_OLDEST/DISCARD
ums.executor.updateConnection.executorShutdownTimeout Duration PT10S 线程池关闭过程的超时时间, 默认: PT10S

对第三方授权登录用户信息与 token 的持久化(jdbc)数据是否缓存到 redis 的配置

属性 类型 默认值 描述 可选项
ums.cache.redis.open Boolean false Redis cache is open, 默认 false true/false
ums.cache.redis.useIocRedisConnectionFactory Boolean false 是否使用 spring IOC 容器中的 RedisConnectionFactory, 默认: false. 如果使用 spring IOC 容器中的 RedisConnectionFactory,则要注意 cache.database-index 要与 spring.redis.database 一样 true/false
cache
ums.cache.redis.cache.databaseIndex Integer 0 redis cache 存放的 database index, 默认: 0
ums.cache.redis.cache.defaultExpireTime Duration PT200S 设置缓存管理器管理的缓存的默认过期时间, 默认: 200, 单位: 秒
ums.cache.redis.cache.entryTtl Duration PT180S cache ttl 。使用 0 声明一个永久的缓存。 默认: 180, 单位: 秒 取缓存时间的 20% 作为动态的随机变量上下浮动, 防止同时缓存失效而缓存击穿
ums.cache.redis.cache.cacheNames Set Names of the default caches to consider for caching operations defined in the annotated class.

第三方授权登录用户信息表 user_connection sql 配置

属性 类型 默认值 描述 可选项
数据库初始化相关语句
ums.repository.enableStartUpInitializeTable Boolean true 是否在启动时检查并自动创建 userConnectionTableNameauthTokenTableName, 默认: TRUE true/false
ums.repository.queryDatabaseNameSql String select database(); 查询数据库名称, 默认为 mysql 查询语句.
ums.repository.authTokenTableName String auth_token 第三方登录 AuthTokenPo 数据库表名称.
ums.repository.queryAuthTokenTableExistSql String SELECT COUNT(1) FROM information_schema.tables WHERE table_name = '%s' AND table_schema = '%s'; 查询户 authTokenTableName 在数据库中是否存在的语句。 注意: sql 语句中的 %s 必须写上,且 %s 的顺序必须与后面的字段名称所对应的含义对应 : authTokenTableName, database
ums.repository.createAuthTokenTableSql String 创建 authTokenTableName 的建表语句 创建 authTokenTableName 的建表语句。 注意: sql 语句中的 %s 必须写上,且 %s 的顺序必须与后面的字段名称所对应的含义对应 : authTokenTableName
自定义第三方登录用户表及相关 CURD 语句
ums.repository.userConnectionTableName String user_connection 第三方登录用户数据库表名称,
ums.repository.userIdColumnName String userId 第三方登录用户数据库用户表用户唯一 ID 字段名称, 默认为 userId
ums.repository.providerIdColumnName String providerId 第三方登录用户数据库用户表服务商 providerId 字段名称, 默认为 providerId
ums.repository.providerUserIdColumnName String providerUserId 第三方登录用户数据库用户表服务商用户 providerUserId 字段名称, 默认为 providerUserId
ums.repository.rankColumnName String rank 第三方登录用户数据库用户表 rank 字段名称, 默认为 rank。 注意:因为 MySQL 8.0 版本 rank 是个关键字。一定要用 ` 包裹。
ums.repository.displayNameColumnName String displayName 第三方登录用户数据库用户表用户显示名称 displayName 字段名称, 默认为 displayName
ums.repository.profileUrlColumnName String profileUrl 第三方登录用户数据库用户表用户主页 profileUrl 字段名称, 默认为 profileUrl
ums.repository.imageUrlColumnName String imageUrl 第三方登录用户数据库用户表用户头像 imageUrl 字段名称, 默认为 imageUrl
ums.repository.accessTokenColumnName String accessToken 第三方登录用户数据库用户表用户 accessToken 字段名称, 默认为 accessToken
ums.repository.tokenIdColumnName String tokenId 第三方登录用户数据库用户表用户 tokenId 字段名称, 默认为 tokenId
ums.repository.refreshTokenColumnName String refreshToken 第三方登录用户数据库用户表用户显 refreshToken 字段名称, 默认为 refreshToken
ums.repository.expireTimeColumnName String expireTime 第三方登录用户数据库用户表用户过期时间 expireTime 字段名称, 默认为 expireTime
ums.repository.creatUserConnectionTableSql String "CREATE TABLE %s (%s varchar(255) NOT NULL, %s varchar(255) NOT NULL, %s varchar(255) NOT NULL, %s int NOT NULL, %s varchar(255), %s varchar(512), %s varchar(512), %s varchar(512) NOT NULL, %s varchar(512), %s varchar(512), %s bigint, PRIMARY KEY (%s, %s, %s), unique KEY idx_userId_providerId_rank(%s, %s, %s), KEY idx_providerId_providerUserId_rank (%s, %s, %s)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" 第三方登录用户数据库用户表创建语句。 修改第三方登录用户数据库用户表创建语句时,要注意:修改字段名称可以直接修改上面的字段名称即可,不用修改建表语句,不可以减少字段,但可以另外增加字段。 用户需要对第三方登录的用户表与 curd 的 sql 语句结构进行更改时, 必须实现对应的 UsersConnectionRepositoryFactory, 如果需要,请实现 UsersConnectionRepositoryFactory,可以参考 Auth2JdbcUsersConnectionRepositoryFactory。 注意: sql 语句中的 %s 必须写上,且 %s 的顺序必须与后面的字段名称所对应的含义对应 : tableName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName、 rankColumnName、 displayNameColumnName、 profileUrlColumnName、 imageUrlColumnName、 accessTokenColumnName、 tokenIdColumnName、 refreshTokenColumnName、 expireTimeColumnName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName、 userIdColumnName、 providerIdColumnName、 rankColumnName、 providerIdColumnName、 providerUserIdColumnName、 rankColumnName、
ums.repository.queryUserConnectionTableExistSql String SELECT COUNT(1) FROM information_schema.tables WHERE table_schema='%s' AND table_name = '%s' 第三方登录用户数据库用户表查询 userIds 的查询语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : databaseName、 tableName
ums.repository.findUserIdsWithConnectionSql String select %s from %s where %s = ? and %s = ? 第三方登录用户数据库用户表查询 userIds 的查询语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : userIdColumnName、 tableName、 providerIdColumnName、 providerUserIdColumnName
ums.repository.findUserIdsConnectedToSql String select %s from %S where %s = :%s and %s in (:%s) 通过第三方服务提供商提供的 providerId 与 providerUserIds 从数据库用户表查询 userIds 的查询语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : userIdColumnName、 tableName、 providerIdColumnName、 providerUserIdColumnName
ums.repository.selectFromUserConnectionSql String select %s, %s, %s, %s, %s, %s, %s, %s, %s, %s from %s 通过第三方服务提供商提供的 providerId 与 providerUserIds 从数据库用户表查询 userIds 的查询语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应, %s按顺序会用对应的 : userIdColumnName、 providerIdColumnName、 providerUserIdColumnName、 displayNameColumnName、 profileUrlColumnName、 imageUrlColumnName、 accessTokenColumnName、 tokenIdColumnName、 refreshTokenColumnName、 expireTimeColumnName、 tableName
ums.repository.updateConnectionSql String update %s set %s = ?, %s = ?, %s = ?, %s = ?, %s = ?, %s = ?, %s = ? where %s = ? and %s = ? and %s = ? 第三方登录用户数据库用户表更新语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应, %s按顺序会用对应的 : tableName、 displayNameColumnName、 profileUrlColumnName、 imageUrlColumnName、 accessTokenColumnName、 tokenIdColumnName、 refreshTokenColumnName、 expireTimeColumnName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName
ums.repository.addConnectionSql String insert into %s(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 第三方登录用户数据库用户表添加用户语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应, %s按顺序会用对应的 : tableName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName、 rankColumnName、 displayNameColumnName、 profileUrlColumnName、 imageUrlColumnName、 accessTokenColumnName、 tokenIdColumnName、 refreshTokenColumnName、 expireTimeColumnName
ums.repository.addConnectionQueryForRankSql String select coalesce(max(%s) + 1, 1) as %s from %s where %s = ? and %s = ? 第三方登录用户数据库用户表查询添加用户时的所需 rank 的值。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : rankColumnName、 rankColumnName、 tableName、 userIdColumnName、 providerIdColumnName
ums.repository.removeConnectionsSql String delete from %s where %s = ? and %s = ? 第三方登录用户数据库用户表根据 userId 与 providerId 删除多个用户。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : tableName、 userIdColumnName、 providerIdColumnName
ums.repository.removeConnectionSql String delete from %s where %s = ? and %s = ? and %s = ? 第三方登录用户数据库用户表根据 userId、providerId、providerUserId 删除一个用户。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : tableName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName

过时属性: ums-social-spring-boot-starter:1.2.0 版本

social_userConnection redisCache属性

属性 类型 默认值 描述 可选项
ums.redis.open Boolean false Redis cache is open, 默认 false true/false
ums.redis.useIocRedisConnectionFactory Boolean false 是否使用 spring IOC 容器中的 RedisConnectionFactory, 默认: false. 如果使用 spring IOC 容器中的 RedisConnectionFactory,则要注意 cache.database-index 要与 spring.redis.database 一样 true/false
cache
ums.redis.cache.databaseIndex Integer 0 redis cache 存放的 database index, 默认: 0
ums.redis.cache.defaultExpireTime Duration PT200S 设置缓存管理器管理的缓存的默认过期时间, 默认: 200s
ums.redis.cache.entryTtl Duration PT180S Set the ttl to apply for cache entries. Use Duration.ZERO to declare an eternal cache. 默认: 180s
ums.redis.cache.cacheNames Set Names of the default caches to consider for caching operations defined in the annotated class.

过时属性: ums-social-spring-boot-starter:1.2.0 版本

social属性

属性 类型 默认值 描述 可选项
第三方登录注册相关
ums.social.socialSignUpIsOpen Boolean false social 第三方登录注册功能是否开启,默认为 false true/false
ums.social.socialUserRegisterUrl String /authentication/social 第三方登录用户从 signUpUrl 提交的用户信息表单,默认由 /authentication/social 进行处理,由 Social 处理,不需要用户实现, 更改 url,需自己实现处理逻辑
ums.social.signUpUrl String /signUp.html(必须自己实现) 第三方登录用户授权成功且未注册,则跳转的注册页面, 默认为 /signUp.html, autoSignIn=true 且实现 BaseConnectionSignUp 接口则自动登录时 signUpUrl 会失效
ums.social.signInUrl String /signIn.html(必须自己实现) 第三方登录页面, 默认为 /signIn.html
ums.social.autoSignIn Boolean true 第三方登录时是否自动注册:如果为 true 且实现 BaseConnectionSignUp 接口则自动登录,而且 signUpUrl 失效, 默认为 true true/false
第三方登录绑定相关
ums.social.bandingUrl String /banding.html(必须自己实现) 第三方登录绑定页面(必须自己实现), 默认为 /banding.html
ums.social.bandingProviderConnectionListName String connections 用户绑定第三方账号的 List 的参数名称, 默认: connections
ums.social.viewPath String connect/ 用户绑定第三方账号后返回状态信息的视图前缀, 默认: connect/ , 在自定义 AbstractView 时有用
第三方登录相关
ums.social.userIdParamName String userId 第三方登录用户注册时: 用户唯一 ID 字段名称, 默认为 userId
ums.social.passwordParamName String password 第三方登录用户注册时: 密码 字段名称, 默认为 password
ums.social.providerIdParamName String providerId 第三方录用户注册时: 服务商 providerId 字段名称, 默认为 providerId
ums.social.providerUserIdParamName String providerUserId 第三方登录用户注册时: 在服务商那的用户唯一ID providerUserId 字段名称, 默认为 providerUserId
ums.social.avatarUrlParamName String avatarUrl 第三方登录用户注册时: 用户头像 avatarUrl 字段名称, 默认为 avatarUrl
ums.social.callbackUrl String /auth/callback 第三方登录回调处理 url ,也是 RedirectUrl 的前缀,也是统一的回调地址入口,默认为 /auth/callback.
ums.social.domain String http://127.0.0.1 第三方登录回调的域名, 例如:https://localhost 默认为 "http://127.0.0.1", redirectUrl 直接由 domain/servletContextPath/callbackUrl/providerId(ums.social.[qq/wechat/gitee/weibo])组成
ums.social.failureUrl String /signIn.html(必须自己实现) 第三方登录用户授权失败跳转页面(必须自己实现), 默认为 "/signIn.html"
第三方登录 key 与 secret 加密相关
ums.social.textEncryptorPassword String 7ca5d913a17b4942942d16a974e3fecc 第三方登录用户数据库表的字段 key 与 secret 加密专用密码
ums.social.textEncryptorSalt String cd538b1b077542aca5f86942b6507fe2 第三方登录用户数据库表的字段 key 与 secret 加密专用 salt
QQ
ums.social.qq.enable Boolean false true/false
ums.social.qq.providerId String qq
ums.social.qq.redirectUrl String 自动配置 回调地址(格式必须是:domain/servletContextPath/callbackUrl/providerId)servletContextPathSocialAutoConfiguration.init() 中设置
ums.social.qq.appId String 第三方 appId
ums.social.qq.appSecret String 第三方 appSecret
GITEE
ums.social.gitee.enable Boolean false true/false
ums.social.gitee.providerId String gitee
ums.social.gitee.redirectUrl String 自动配置 回调地址(格式必须是:domain/servletContextPath/callbackUrl/providerId)servletContextPathSocialAutoConfiguration.init() 中设置
ums.social.gitee.appId String 第三方 appId
ums.social.gitee.appSecret String 第三方 appSecret
WEIXIN
ums.social.weixin.enable Boolean false true/false
ums.social.weixin.providerId String weixin
ums.social.weixin.redirectUrl String 自动配置 回调地址(格式必须是:domain/servletContextPath/callbackUrl/providerId)servletContextPathSocialAutoConfiguration.init() 中设置
ums.social.weixin.appId String 第三方 appId
ums.social.weixin.appSecret String 第三方 appSecret
WEIBO
ums.social.weibo.enable Boolean false true/false
ums.social.weibo.providerId String weibo
ums.social.weibo.redirectUrl String 自动配置 回调地址(格式必须是:domain/servletContextPath/callbackUrl/providerId)servletContextPathSocialAutoConfiguration.init() 中设置
ums.social.weibo.appId String 第三方 appId
ums.social.weibo.appSecret String 第三方 appSecret

过时属性: ums-social-spring-boot-starter:1.2.0 版本

属性 类型 默认值 描述 可选项
自定义第三方登录用户表及相关 CURD 语句
ums.social.tableName String social_UserConnection 第三方登录用户数据库表名称,
ums.social.userIdColumnName String userId 第三方登录用户数据库用户表用户唯一 ID 字段名称, 默认为 userId
ums.social.providerIdColumnName String providerId 第三方登录用户数据库用户表服务商 providerId 字段名称, 默认为 providerId
ums.social.providerUserIdColumnName String providerUserId 第三方登录用户数据库用户表服务商用户 providerUserId 字段名称, 默认为 providerUserId
ums.social.rankColumnName String rank 第三方登录用户数据库用户表 rank 字段名称, 默认为 rank。 注意:因为 MySQL 8.0 版本 rank 是个关键字。一定要用 ` 包裹。
ums.social.displayNameColumnName String displayName 第三方登录用户数据库用户表用户显示名称 displayName 字段名称, 默认为 displayName
ums.social.profileUrlColumnName String profileUrl 第三方登录用户数据库用户表用户主页 profileUrl 字段名称, 默认为 profileUrl
ums.social.imageUrlColumnName String imageUrl 第三方登录用户数据库用户表用户头像 imageUrl 字段名称, 默认为 imageUrl
ums.social.accessTokenColumnName String accessToken 第三方登录用户数据库用户表用户 accessToken 字段名称, 默认为 accessToken
ums.social.secretColumnName String secret 第三方登录用户数据库用户表用户 secret 字段名称, 默认为 secret
ums.social.refreshTokenColumnName String refreshToken 第三方登录用户数据库用户表用户显 refreshToken 字段名称, 默认为 refreshToken
ums.social.expireTimeColumnName String expireTime 第三方登录用户数据库用户表用户过期时间 expireTime 字段名称, 默认为 expireTime
ums.social.creatUserConnectionTableSql String "create table %s (%s varchar(255) not null,\n\t%s varchar(255) not null,\n\t%s varchar(255),\n\t%s int not null,\n\t%s varchar(255),\n\t%s varchar(512),\n\t%s varchar(512),\n\t%s varchar(512) not null,\n\t%s varchar(512),\n\t%s varchar(512),\n\t%s bigint,\n\tprimary key (%s, %s, %s),\n\tunique index UserConnectionRank(%s, %s, %s));" 第三方登录用户数据库用户表创建语句。 修改第三方登录用户数据库用户表创建语句时,要注意:修改字段名称可以直接修改上面的字段名称即可,不用修改建表语句,不可以减少字段,但可以另外增加字段。 用户需要对第三方登录的用户表与 curd 的 sql 语句结构进行更改时, 必须实现对应的 UsersConnectionRepositoryFactory, 如果需要,请实现 UsersConnectionRepositoryFactory,可以参考 OAuth2UsersConnectionRepositoryFactory。 注意: sql 语句中的 %s 必须写上,且 %s 的顺序必须与后面的字段名称所对应的含义对应 : tableName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName、 rankColumnName、 displayNameColumnName、 profileUrlColumnName、 imageUrlColumnName、 accessTokenColumnName、 secretColumnName、 refreshTokenColumnName、 expireTimeColumnName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName、 userIdColumnName、 providerIdColumnName、 rankColumnName
ums.social.queryUserConnectionTableExistSql String SELECT COUNT(1) FROM information_schema.tables WHERE table_schema='%s' AND table_name = '%s' 第三方登录用户数据库用户表查询 userIds 的查询语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : databaseName、 tableName
ums.social.findUserIdsWithConnectionSql String select %s from %s where %s = ? and %s = ? 第三方登录用户数据库用户表查询 userIds 的查询语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : userIdColumnName、 tableName、 providerIdColumnName、 providerUserIdColumnName
ums.social.findUserIdsConnectedToSql String select %s from %S where %s = :%s and %s in (:%s) 通过第三方服务提供商提供的 providerId 与 providerUserIds 从数据库用户表查询 userIds 的查询语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : userIdColumnName、 tableName、 providerIdColumnName、 providerUserIdColumnName
ums.social.selectFromUserConnectionSql String select %s, %s, %s, %s, %s, %s, %s, %s, %s, %s from %s 通过第三方服务提供商提供的 providerId 与 providerUserIds 从数据库用户表查询 userIds 的查询语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : userIdColumnName、 providerIdColumnName、 providerUserIdColumnName、 displayNameColumnName、 profileUrlColumnName、 imageUrlColumnName、 accessTokenColumnName、 secretColumnName、 refreshTokenColumnName、 expireTimeColumnName、 tableName
ums.social.updateConnectionSql String update %s set %s = ?, %s = ?, %s = ?, %s = ?, %s = ?, %s = ?, %s = ? where %s = ? and %s = ? and %s = ? 第三方登录用户数据库用户表更新语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : tableName、 displayNameColumnName、 profileUrlColumnName、 imageUrlColumnName、 accessTokenColumnName、 secretColumnName、 refreshTokenColumnName、 expireTimeColumnName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName
ums.social.addConnectionSql String insert into %s(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 第三方登录用户数据库用户表添加用户语句。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : tableName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName、 rankColumnName、 displayNameColumnName、 profileUrlColumnName、 imageUrlColumnName、 accessTokenColumnName、 secretColumnName、 refreshTokenColumnName、 expireTimeColumnName
ums.social.addConnectionQueryForRankSql String select coalesce(max(%s) + 1, 1) as %s from %s where %s = ? and %s = ? 第三方登录用户数据库用户表查询添加用户时的所需 rank 的值。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : rankColumnName、 rankColumnName、 tableName、 userIdColumnName、 providerIdColumnName
ums.social.removeConnectionsSql String delete from %s where %s = ? and %s = ? 第三方登录用户数据库用户表根据 userId 与 providerId 删除多个用户。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : tableName、 userIdColumnName、 providerIdColumnName
ums.social.removeConnectionSql String delete from %s where %s = ? and %s = ? and %s = ? 第三方登录用户数据库用户表根据 userId、providerId、providerUserId 删除一个用户。 注意: sql 语句中的 %s 必须写上,问号必须与指定的 %s 相对应,%s按顺序会用对应的 : tableName、 userIdColumnName、 providerIdColumnName、 providerUserIdColumnName
Clone this wiki locally