/* * Copyright (c) . * <p> * Licensed under the GNU Lesser General Public License 3.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at smakercloud.smaker */ package com.smakercloud.smaker.auth.config; import com.fasterxml.jackson.databind.ObjectMapper; import com.smakercloud.smaker.common.security.handler.MobileLoginSuccessHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Primary; import org.springframework.core.annotation.Order; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.factory.PasswordEncoderFactories; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.oauth2.provider.ClientDetailsService; import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; /** * @author renzl * @date 2019/2/1 * 认证相关配置 */ @Primary @Order(90) @Configuration public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter { @Autowired private ObjectMapper objectMapper; @Autowired private ClientDetailsService clientDetailsService; @Lazy @Autowired private AuthorizationServerTokenServices defaultAuthorizationServerTokenServices; @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers( "/actuator/**", "/oauth/removeToken", "/oauth/delToken/*", "/oauth/listToken", "/mobile/**").permitAll() .anyRequest().authenticated() .and().csrf().disable(); } @Bean @Override public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Bean public AuthenticationSuccessHandler mobileLoginSuccessHandler() { return MobileLoginSuccessHandler.builder() .objectMapper(objectMapper) .clientDetailsService(clientDetailsService) .passwordEncoder(passwordEncoder()) .defaultAuthorizationServerTokenServices(defaultAuthorizationServerTokenServices).build(); } /** * https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released#password-storage-updated * Encoded password does not look like BCrypt * * @return PasswordEncoder */ @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); } }