All Downloads are FREE. Search and download functionalities are using the official Maven repository.

club.zhcs.lina.starter.auth.AuthAutoConfiguration Maven / Gradle / Ivy

There is a newer version: 3.3.4
Show newest version
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