![JAR search and dependency download from the Maven repository](/logo.png)
club.zhcs.lina.starter.auth.AuthAutoConfiguration Maven / Gradle / Ivy
package club.zhcs.lina.starter.auth;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import com.auth0.jwt.algorithms.Algorithm;
import club.zhcs.lina.auth.aop.TokenAuthInterceptor;
import club.zhcs.lina.auth.encode.PasswordMatcher;
import club.zhcs.lina.auth.jwt.AlgorithmicJWTGenerator;
import club.zhcs.lina.auth.jwt.JWTGenerator;
import club.zhcs.lina.auth.service.AuthService;
import club.zhcs.lina.auth.service.DefaultAuthService;
import club.zhcs.lina.auth.service.UserDetailService;
import club.zhcs.lina.starter.oidc.OpenIDConnectAutoConfiguration;
import jakarta.servlet.http.HttpServletRequest;
/**
* @author Kerbores ([email protected])
*
*/
@AutoConfiguration
@EnableConfigurationProperties(AuthAutoConfigurationPeroperties.class)
@AutoConfigureAfter(OpenIDConnectAutoConfiguration.class)
public class AuthAutoConfiguration {
@Bean
@ConditionalOnBean(AuthService.class)
TokenAuthInterceptor tokenAuthInterceptor(AuthService authService, AuthAutoConfigurationPeroperties configurationPeroperties) {
return new TokenAuthInterceptor(authService, configurationPeroperties.getWithoutAuthenticationUrlRegulars());
}
@Bean
@ConditionalOnMissingBean
PasswordMatcher passwordMatcher() {
return new PasswordMatcher() {};
}
@Bean
@ConditionalOnMissingBean
Algorithm algorithm(AuthAutoConfigurationPeroperties config) {
return Algorithm.HMAC256(config.getJwt().getPassword());
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnBean(Algorithm.class)
JWTGenerator jwtGenerator(AuthAutoConfigurationPeroperties config, Algorithm algorithm) {
return AlgorithmicJWTGenerator.builder()
.term(config.getJwt().getTerm())
.unit(config.getJwt().getUnit())
.issuer(config.getJwt().getIssuer())
.algorithm(algorithm)
.build();
}
@Bean
@ConditionalOnBean(UserDetailService.class)
@ConditionalOnMissingBean
AuthService authService(UserDetailService userDetailService, JWTGenerator jwtGenerator, HttpServletRequest request) {
return new DefaultAuthService(jwtGenerator, request, userDetailService);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy