From bf6ce3c0ab371ba1e5b114820fd2e48e483a2cae Mon Sep 17 00:00:00 2001 From: winLsy <18332763730@163.com> Date: Sat, 20 Jan 2018 18:19:53 +0800 Subject: [PATCH] =?UTF-8?q?app=E7=99=BB=E5=BD=95=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot-starter-security-app/README.md | 3 + .../BootStarterSecurityAppApplication.java | 9 ++- .../AuthorizationProviderConfig.java | 14 +++++ .../AuthorizationResourceConfig.java | 13 ++++ .../config/authorization2/package-info.java | 1 + .../MsAuthenticationFailureHandler.java | 54 ++++++++++++++++ .../MsAuthenticationSuccessHandler.java | 62 +++++++++++++++++++ .../app/config/component/package-info.java | 1 + .../security/app/config/package-info.java | 1 + .../main/resources/META-INF/spring.factories | 1 + .../src/main/resources/application.properties | 0 ...BootStarterSecurityBrowserApplication.java | 1 + .../browser/config/BrowserSecurityConfig.java | 14 +---- .../session/MsInvalidSessionStrategy.java | 2 + .../BootStarterSecurityCoreApplication.java | 13 ++++ .../boot-starter-security-demo/pom.xml | 2 +- .../BootStarterSecurityDemoApplication.java | 1 - .../src/main/resources/application.yml | 13 ++-- .../config/DynamicDataSourceConfig.java | 2 +- 19 files changed, 184 insertions(+), 23 deletions(-) create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationResourceConfig.java create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/package-info.java create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/MsAuthenticationFailureHandler.java create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/MsAuthenticationSuccessHandler.java create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/package-info.java create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/package-info.java create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/resources/META-INF/spring.factories delete mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/resources/application.properties diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/README.md b/boot-starter/boot-starter-security/boot-starter-security-app/README.md index e69de29..ea490b7 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-app/README.md +++ b/boot-starter/boot-starter-security/boot-starter-security-app/README.md @@ -0,0 +1,3 @@ + +- oauth2请求的用户必须有一个ROLE_USER的用户权限 +- 相同的用户,会得到相同的token \ No newline at end of file diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/BootStarterSecurityAppApplication.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/BootStarterSecurityAppApplication.java index abf2de6..3659738 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/BootStarterSecurityAppApplication.java +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/BootStarterSecurityAppApplication.java @@ -1,8 +1,15 @@ package com.micro.fast.security.app; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; -@SpringBootApplication +/** + * 自动配置入口类 + * @author lsy + */ +@Configuration +@ComponentScan public class BootStarterSecurityAppApplication { } diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java new file mode 100644 index 0000000..eed08bc --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java @@ -0,0 +1,14 @@ +package com.micro.fast.security.app.config.authorization2; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; + +/** + * OAuth2协议标准服务商实现配置类 + * @author lsy + */ +@Configuration +@EnableAuthorizationServer +public class AuthorizationProviderConfig { + +} diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationResourceConfig.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationResourceConfig.java new file mode 100644 index 0000000..790a66b --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationResourceConfig.java @@ -0,0 +1,13 @@ +package com.micro.fast.security.app.config.authorization2; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; + +/** + * OAuth2协议标准服务提供实现配置类 + * @author lsy + */ +@Configuration +@EnableResourceServer +public class AuthorizationResourceConfig { +} diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/package-info.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/package-info.java new file mode 100644 index 0000000..8aef451 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/package-info.java @@ -0,0 +1 @@ +package com.micro.fast.security.app.config.authorization2; \ No newline at end of file diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/MsAuthenticationFailureHandler.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/MsAuthenticationFailureHandler.java new file mode 100644 index 0000000..6e31795 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/MsAuthenticationFailureHandler.java @@ -0,0 +1,54 @@ +package com.micro.fast.security.app.config.component; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.micro.fast.security.core.browser.constant.LoginType; +import com.micro.fast.security.core.master.SecurityProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * AuthenticationFailureHandler + * 身份认证失败的后续处理类 + * @author lsy + */ +@Component("msAuthenticationFailureHandler") +public class MsAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler { + private static final Logger log = LoggerFactory.getLogger(MsAuthenticationFailureHandler.class); + /** + * object <=> json 处理对象 + */ + @Autowired + private ObjectMapper objectMapper; + /** + * 安全框架配置参数对象 + */ + @Autowired + private SecurityProperties securityProperties; + + @Override + public void onAuthenticationFailure( + HttpServletRequest httpServletRequest + , HttpServletResponse httpServletResponse + , AuthenticationException e) + throws IOException, ServletException { + //根据配置参数判断身份认证失败后的返回类型进行响应 + if (LoginType.JSON.equals(securityProperties.getBrowser().getLoginType())){ + log.info("failure"); + httpServletResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); + httpServletResponse.setContentType("application/json;charset=UTF-8"); + httpServletResponse.getWriter().write(objectMapper.writeValueAsString(e)); + }else{ + super.onAuthenticationFailure(httpServletRequest,httpServletResponse,e); + } + } +} diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/MsAuthenticationSuccessHandler.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/MsAuthenticationSuccessHandler.java new file mode 100644 index 0000000..0d53e14 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/MsAuthenticationSuccessHandler.java @@ -0,0 +1,62 @@ +package com.micro.fast.security.app.config.component; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.micro.fast.security.core.browser.constant.LoginType; +import com.micro.fast.security.core.master.SecurityProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 身份认证成功后的处理类 + * @author lsy + */ +@Component("msAuthenticationSuccessHandler") +public class MsAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { + + private static final Logger log = LoggerFactory.getLogger(MsAuthenticationSuccessHandler.class); + + /** + * 安全框架配置参数对象 + */ + @Autowired + private SecurityProperties securityProperties; + /** + * object <=> json 处理对象 + */ + @Autowired + private ObjectMapper objectMapper; + + /** + * 登录成功后的处理方法 + * @param httpServletRequest + * @param httpServletResponse + * @param authentication 用户认证的详细信息 + * @throws IOException + * @throws ServletException + */ + @Override + public void onAuthenticationSuccess( + HttpServletRequest httpServletRequest + , HttpServletResponse httpServletResponse + , Authentication authentication + ) throws IOException, ServletException { + //根据配置参数判断身份认证成功后的返回类型进行响应 + if (LoginType.JSON.equals(securityProperties.getBrowser().getLoginType())){ + log.info("登录成功"); + httpServletResponse.setContentType("application/json;charset=UTF-8"); + httpServletResponse.getWriter().write(objectMapper.writeValueAsString(authentication)); + }else{ + super.onAuthenticationSuccess(httpServletRequest,httpServletResponse,authentication); + } + + } +} diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/package-info.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/package-info.java new file mode 100644 index 0000000..ad91e4b --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/component/package-info.java @@ -0,0 +1 @@ +package com.micro.fast.security.app.config.component; \ No newline at end of file diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/package-info.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/package-info.java new file mode 100644 index 0000000..4632587 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/package-info.java @@ -0,0 +1 @@ +package com.micro.fast.security.app.config; \ No newline at end of file diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/resources/META-INF/spring.factories b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..e2a9b88 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.micro.fast.security.app.BootStarterSecurityAppApplication \ No newline at end of file diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/resources/application.properties b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/resources/application.properties deleted file mode 100644 index e69de29..0000000 diff --git a/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/BootStarterSecurityBrowserApplication.java b/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/BootStarterSecurityBrowserApplication.java index 25e68c3..ca58b48 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/BootStarterSecurityBrowserApplication.java +++ b/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/BootStarterSecurityBrowserApplication.java @@ -6,4 +6,5 @@ import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan public class BootStarterSecurityBrowserApplication { + } diff --git a/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/config/BrowserSecurityConfig.java b/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/config/BrowserSecurityConfig.java index 3467cc7..7582724 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/config/BrowserSecurityConfig.java +++ b/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/config/BrowserSecurityConfig.java @@ -1,7 +1,5 @@ package com.micro.fast.security.browser.config; -import com.micro.fast.security.browser.session.MsExpiredSessionStrategy; -import com.micro.fast.security.browser.session.MsInvalidSessionStrategy; import com.micro.fast.security.core.authentication.mobile.SmsCodeAuthenticationSecurityConfig; import com.micro.fast.security.core.master.SecurityConstants; import com.micro.fast.security.core.master.SecurityProperties; @@ -13,8 +11,6 @@ import org.springframework.context.annotation.Configuration; 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.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; @@ -177,15 +173,7 @@ public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter { } - /** - * 定义身份认证红密码的加密解密类的bean - * - * @return - */ - @Bean - public PasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } + /** * 用于记住我功能 diff --git a/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/session/MsInvalidSessionStrategy.java b/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/session/MsInvalidSessionStrategy.java index 15caf49..80a57b9 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/session/MsInvalidSessionStrategy.java +++ b/boot-starter/boot-starter-security/boot-starter-security-browser/src/main/java/com/micro/fast/security/browser/session/MsInvalidSessionStrategy.java @@ -10,11 +10,13 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.security.web.session.InvalidSessionStrategy; +import org.springframework.stereotype.Component; /** * * @author lsy */ +@Component public class MsInvalidSessionStrategy extends AbstractSessionStrategy implements InvalidSessionStrategy { public MsInvalidSessionStrategy(String invalidSessionUrl) { diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/BootStarterSecurityCoreApplication.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/BootStarterSecurityCoreApplication.java index 9458fb9..c942f94 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/BootStarterSecurityCoreApplication.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/BootStarterSecurityCoreApplication.java @@ -1,9 +1,13 @@ package com.micro.fast.security.core; import com.micro.fast.security.core.master.SecurityProperties; +import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; /** * @author lsy @@ -12,5 +16,14 @@ import org.springframework.context.annotation.Configuration; @ComponentScan @EnableConfigurationProperties(SecurityProperties.class) public class BootStarterSecurityCoreApplication { + /** + * 定义身份认证红密码的加密解密类的bean + * + * @return + */ + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } } diff --git a/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml b/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml index b3fed26..0713b3c 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml +++ b/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml @@ -18,7 +18,7 @@ com.micro.fast - boot-starter-security-browser + boot-starter-security-app ${micro.fast.version} diff --git a/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/BootStarterSecurityDemoApplication.java b/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/BootStarterSecurityDemoApplication.java index e042ee6..a6f5907 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/BootStarterSecurityDemoApplication.java +++ b/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/BootStarterSecurityDemoApplication.java @@ -11,7 +11,6 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; */ @SpringBootApplication @RestController -@EnableSwagger2 public class BootStarterSecurityDemoApplication { public static void main(String[] args) { diff --git a/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/resources/application.yml b/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/resources/application.yml index f100a7a..7b96646 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/resources/application.yml +++ b/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/resources/application.yml @@ -1,14 +1,14 @@ spring: - session: - store-type: redis +# session: +# store-type: redis datasource: url: jdbc:mysql://127.0.0.1:3317/micro?useUncoide=true&chracterEncoding=utf-8&useSSL=false username: root password: studyj2e driver-class-name: com.mysql.jdbc.Driver - redis: - host: fthipw.natappfree.cc - port: 6379 +# redis: +# host: fthipw.natappfree.cc +# port: 6379 #security: # basic: # enabled: true @@ -29,5 +29,6 @@ server: security: oauth2: client: - client-id: + client-id: 授权给谁 + client-secret: 授权给谁的密码 diff --git a/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/config/DynamicDataSourceConfig.java b/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/config/DynamicDataSourceConfig.java index a4cd8a8..20dc798 100644 --- a/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/config/DynamicDataSourceConfig.java +++ b/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/config/DynamicDataSourceConfig.java @@ -41,7 +41,7 @@ public class DynamicDataSourceConfig { /** * 从数据源 */ - @Autowired(required = false) + @Autowired @Qualifier(MASTER_DATA_SOURCE) private DataSource masterDataSource;