
club.zhcs.lina.starter.auth.AuthAutoConfiguration Maven / Gradle / Ivy
package club.zhcs.lina.starter.auth;
import club.zhcs.lina.auth.UserDetailService;
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.impl.DefaultAuthService;
import com.auth0.jwt.algorithms.Algorithm;
import org.springframework.boot.autoconfigure.AutoConfiguration;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Kerbores ([email protected])
*/
@AutoConfiguration
@EnableConfigurationProperties(AuthAutoConfigurationProperties.class)
public class AuthAutoConfiguration {
@Bean
@ConditionalOnBean(AuthService.class)
TokenAuthInterceptor tokenAuthInterceptor(AuthService authService, AuthAutoConfigurationProperties configurationProperties) {
return new TokenAuthInterceptor(authService, configurationProperties.getWithoutAuthenticationUrlRegulars());
}
@Bean
@ConditionalOnMissingBean
PasswordMatcher passwordMatcher() {
return new PasswordMatcher() {
};
}
@Bean
@ConditionalOnMissingBean
Algorithm algorithm(AuthAutoConfigurationProperties config) {
return Algorithm.HMAC256(config.getJwt().getPassword());
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnBean(Algorithm.class)
JWTGenerator jwtGenerator(AuthAutoConfigurationProperties 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, HttpServletResponse response) {
return new DefaultAuthService(jwtGenerator, userDetailService, request, response);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy