OAuth2TokenGeneratorAutoConfiguration.kt
package io.github.lishangbu.avalon.oauth2.authorizationserver.autoconfiguration
import io.github.lishangbu.avalon.oauth2.authorizationserver.token.OAuth2RefreshTokenGenerator
import io.github.lishangbu.avalon.oauth2.authorizationserver.token.ReferenceOAuth2AccessTokenGenerator
import org.springframework.boot.autoconfigure.AutoConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.security.oauth2.jwt.JwtEncoder
import org.springframework.security.oauth2.server.authorization.token.DelegatingOAuth2TokenGenerator
import org.springframework.security.oauth2.server.authorization.token.JwtGenerator
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenGenerator
/**
* OAuth2 令牌生成器自动配置
*
* 组合访问令牌、刷新令牌和 JWT 生成器
*/
@AutoConfiguration
class OAuth2TokenGeneratorAutoConfiguration(
/** JWT 编码器 */
private val jwtEncoder: JwtEncoder,
) {
/** 创建令牌生成器 */
@Bean
fun tokenGenerator(): OAuth2TokenGenerator<*> =
DelegatingOAuth2TokenGenerator(
ReferenceOAuth2AccessTokenGenerator(),
OAuth2RefreshTokenGenerator(),
JwtGenerator(jwtEncoder),
)
}