UserDetailsService 提供替换能力,方便独立授权服务器是,使用远程调用确认登录

This commit is contained in:
b2baccline
2021-07-19 11:33:53 +08:00
parent 691fda34be
commit ff3ea462d2
5 changed files with 53 additions and 16 deletions

View File

@@ -11,10 +11,23 @@
<artifactId>ballcat-auth-biz</artifactId>
<dependencies>
<dependency>
<groupId>com.hccake</groupId>
<artifactId>ballcat-common-security</artifactId>
</dependency>
<dependency>
<groupId>com.hccake</groupId>
<artifactId>ballcat-spring-boot-starter-redis</artifactId>
</dependency>
<dependency>
<groupId>com.hccake</groupId>
<artifactId>ballcat-system-model</artifactId>
</dependency>
<dependency>
<groupId>com.hccake</groupId>
<artifactId>ballcat-system-biz</artifactId>
</dependency>
<dependency>
<groupId>com.anji-plus</groupId>
<artifactId>captcha</artifactId>

View File

@@ -2,8 +2,9 @@ package com.hccake.ballcat.auth.configuration;
import com.hccake.ballcat.auth.CustomTokenEnhancer;
import com.hccake.ballcat.auth.OAuth2AuthorizationServerProperties;
import com.hccake.ballcat.auth.UserInfoCoordinator;
import com.hccake.ballcat.auth.confogurer.CustomAuthorizationServerConfigurer;
import com.hccake.ballcat.auth.userdetails.SysUserDetailsServiceImpl;
import com.hccake.ballcat.auth.userdetails.UserInfoCoordinator;
import com.hccake.ballcat.auth.configurer.CustomAuthorizationServerConfigurer;
import com.hccake.ballcat.common.redis.config.CachePropertiesHolder;
import com.hccake.ballcat.common.security.component.CustomRedisTokenStore;
import com.hccake.ballcat.common.security.constant.SecurityConstants;
@@ -11,12 +12,16 @@ import com.hccake.ballcat.common.security.exception.CustomAuthenticationEntryPoi
import com.hccake.ballcat.common.security.exception.CustomWebResponseExceptionTranslator;
import com.hccake.ballcat.common.security.properties.SecurityProperties;
import com.hccake.ballcat.common.security.util.PasswordUtils;
import com.hccake.ballcat.system.service.SysUserService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Import;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.common.exceptions.OAuth2Exception;
import org.springframework.security.oauth2.provider.error.WebResponseExceptionTranslator;
@@ -87,13 +92,34 @@ public class AuthorizationAutoConfiguration {
}
/**
* 用户信息协调者
* @return UserInfoCoordinator
* 用户详情处理类
*/
@Bean
@ConditionalOnMissingBean
public UserInfoCoordinator userInfoCoordinator() {
return new UserInfoCoordinator();
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(SysUserService.class)
@ConditionalOnMissingBean(UserDetailsService.class)
static class UserDetailsServiceConfiguration {
/**
* 用户详情处理类
* @return SysUserDetailsServiceImpl
*/
@Bean
@ConditionalOnMissingBean
public UserDetailsService userDetailsService(SysUserService sysUserService,
UserInfoCoordinator userInfoCoordinator) {
return new SysUserDetailsServiceImpl(sysUserService, userInfoCoordinator);
}
/**
* 用户信息协调者
* @return UserInfoCoordinator
*/
@Bean
@ConditionalOnMissingBean
public UserInfoCoordinator userInfoCoordinator() {
return new UserInfoCoordinator();
}
}
}

View File

@@ -1,7 +1,6 @@
package com.hccake.ballcat.auth.confogurer;
package com.hccake.ballcat.auth.configurer;
import com.hccake.ballcat.auth.CustomAccessTokenConverter;
import com.hccake.ballcat.auth.SysUserDetailsServiceImpl;
import com.hccake.ballcat.auth.mobile.MobileTokenGranter;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
@@ -10,6 +9,7 @@ import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
@@ -40,7 +40,7 @@ public class CustomAuthorizationServerConfigurer implements AuthorizationServerC
private final TokenStore tokenStore;
private final SysUserDetailsServiceImpl sysUserDetailsService;
private final UserDetailsService userDetailsService;
private final TokenEnhancer tokenEnhancer;
@@ -82,7 +82,7 @@ public class CustomAuthorizationServerConfigurer implements AuthorizationServerC
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
// @formatter:off
endpoints.tokenStore(tokenStore).userDetailsService(sysUserDetailsService)
endpoints.tokenStore(tokenStore).userDetailsService(userDetailsService)
.authenticationManager(authenticationManager)
// 自定义token
.tokenEnhancer(tokenEnhancer)

View File

@@ -1,4 +1,4 @@
package com.hccake.ballcat.auth;
package com.hccake.ballcat.auth.userdetails;
import cn.hutool.core.collection.CollectionUtil;
import com.hccake.ballcat.common.security.constant.TokenAttributeNameConstants;
@@ -13,7 +13,6 @@ import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.*;
@@ -23,7 +22,6 @@ import java.util.*;
* @date 2019/9/25 20:44
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class SysUserDetailsServiceImpl implements UserDetailsService {

View File

@@ -1,4 +1,4 @@
package com.hccake.ballcat.auth;
package com.hccake.ballcat.auth.userdetails;
import com.hccake.ballcat.system.model.entity.SysUser;