OpaqueTokenIntrospectorAutoConfiguration.kt

package io.github.lishangbu.avalon.oauth2.authorizationserver.autoconfiguration

import io.github.lishangbu.avalon.oauth2.authorizationserver.introspection.DefaultOpaqueTokenIntrospector
import org.springframework.boot.autoconfigure.AutoConfiguration
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
import org.springframework.context.annotation.Bean
import org.springframework.security.core.userdetails.UserDetailsService
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService
import org.springframework.security.oauth2.server.resource.introspection.OpaqueTokenIntrospector

/**
 * 不透明令牌内省器自动配置
 *
 * 基于授权服务和用户服务创建默认的 [OpaqueTokenIntrospector]
 */
@AutoConfiguration
class OpaqueTokenIntrospectorAutoConfiguration {
    /** 创建不透明令牌内省器 */
    @Bean
    @ConditionalOnBean(value = [OAuth2AuthorizationService::class, UserDetailsService::class])
    fun opaqueTokenIntrospector(
        oAuth2AuthorizationService: OAuth2AuthorizationService,
        userDetailsService: UserDetailsService,
    ): OpaqueTokenIntrospector = DefaultOpaqueTokenIntrospector(oAuth2AuthorizationService, userDetailsService)
}