From 87c4c2a2f59c8f6e35aabeb728fcce0989f34a21 Mon Sep 17 00:00:00 2001 From: winLsy <18332763730@163.com> Date: Sun, 21 Jan 2018 15:20:25 +0800 Subject: [PATCH] =?UTF-8?q?app=E4=BD=BF=E7=94=A8=E6=A0=87=E5=87=86?= =?UTF-8?q?=E7=9A=84Oauth2=E5=8D=8F=E8=AE=AE=E8=8E=B7=E5=8F=96accessToken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuthorizationResourceConfig.java | 2 +- ...ppSocialAuthenticationFilterProcessor.java | 24 +++++++++++++++++++ .../OpenIdAuthenticationFilter.java | 2 +- .../OpenIdAuthenticationProvider.java | 5 +--- .../OpenIdAuthenticationSecurityConfig.java | 2 +- .../OpenIdAuthenticationToken.java | 2 +- .../core/social/MsSpringSocialConfigurer.java | 16 +++++++++++++ ...cialAuthenticationFilterPostProcessor.java | 10 ++++++++ .../security/core/social/SocialConfig.java | 9 +++++-- .../core/social/SocialProperties.java | 1 - 10 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/impl/AppSocialAuthenticationFilterProcessor.java rename boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/{ => openid}/OpenIdAuthenticationFilter.java (98%) rename boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/{ => openid}/OpenIdAuthenticationProvider.java (92%) rename boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/{ => openid}/OpenIdAuthenticationSecurityConfig.java (98%) rename boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/{ => openid}/OpenIdAuthenticationToken.java (97%) create mode 100644 boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialAuthenticationFilterPostProcessor.java 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 index c05f50e..63c485a 100644 --- 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 @@ -2,7 +2,7 @@ package com.micro.fast.security.app.config.authorization2; import com.micro.fast.security.app.config.component.MsAuthenticationFailureHandler; import com.micro.fast.security.app.config.component.MsAuthenticationSuccessHandler; -import com.micro.fast.security.app.social.OpenIdAuthenticationSecurityConfig; +import com.micro.fast.security.app.social.openid.OpenIdAuthenticationSecurityConfig; 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; diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/impl/AppSocialAuthenticationFilterProcessor.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/impl/AppSocialAuthenticationFilterProcessor.java new file mode 100644 index 0000000..45f5cb3 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/impl/AppSocialAuthenticationFilterProcessor.java @@ -0,0 +1,24 @@ +package com.micro.fast.security.app.social.impl; + +import com.micro.fast.security.core.social.SocialAuthenticationFilterPostProcessor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.web.authentication.AuthenticationSuccessHandler; +import org.springframework.social.security.SocialAuthenticationFilter; +import org.springframework.stereotype.Component; + +/** + * 社交登录成功后的后处理器实现 + * @author lsy + */ +@Component +public class AppSocialAuthenticationFilterProcessor implements SocialAuthenticationFilterPostProcessor { + + @Autowired + private AuthenticationSuccessHandler successHandler; + + @Override + public void process(SocialAuthenticationFilter socialAuthenticationFilter) { + //传入授权成功处理器 + socialAuthenticationFilter.setAuthenticationSuccessHandler(successHandler); + } +} diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationFilter.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationFilter.java similarity index 98% rename from boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationFilter.java rename to boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationFilter.java index 35d6cd6..06d4565 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationFilter.java +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationFilter.java @@ -1,4 +1,4 @@ -package com.micro.fast.security.app.social; +package com.micro.fast.security.app.social.openid; import com.micro.fast.security.core.master.SecurityConstants; import org.springframework.security.authentication.AuthenticationServiceException; diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationProvider.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationProvider.java similarity index 92% rename from boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationProvider.java rename to boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationProvider.java index 89e7fc4..9516ea6 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationProvider.java +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationProvider.java @@ -1,15 +1,12 @@ -package com.micro.fast.security.app.social; +package com.micro.fast.security.app.social.openid; -import com.micro.fast.security.core.authentication.mobile.SmsCodeAuthenticationToken; import org.apache.commons.collections.CollectionUtils; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.InternalAuthenticationServiceException; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.social.connect.UsersConnectionRepository; -import org.springframework.social.security.SocialUserDetails; import org.springframework.social.security.SocialUserDetailsService; import java.util.HashSet; diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationSecurityConfig.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationSecurityConfig.java similarity index 98% rename from boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationSecurityConfig.java rename to boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationSecurityConfig.java index 2b0ed5c..4c99b09 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationSecurityConfig.java +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationSecurityConfig.java @@ -1,4 +1,4 @@ -package com.micro.fast.security.app.social; +package com.micro.fast.security.app.social.openid; import org.springframework.beans.factory.annotation.Autowired; diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationToken.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationToken.java similarity index 97% rename from boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationToken.java rename to boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationToken.java index cd8d028..10f7016 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/OpenIdAuthenticationToken.java +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/social/openid/OpenIdAuthenticationToken.java @@ -1,4 +1,4 @@ -package com.micro.fast.security.app.social; +package com.micro.fast.security.app.social.openid; import org.springframework.security.authentication.AbstractAuthenticationToken; import org.springframework.security.core.GrantedAuthority; diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsSpringSocialConfigurer.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsSpringSocialConfigurer.java index 9222592..2c2afc5 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsSpringSocialConfigurer.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsSpringSocialConfigurer.java @@ -9,6 +9,10 @@ import org.springframework.social.security.SpringSocialConfigurer; */ public class MsSpringSocialConfigurer extends SpringSocialConfigurer{ + /** + * 验证登录后处理器 + */ + private SocialAuthenticationFilterPostProcessor socialAuthenticationFilterPostProcessor; /** * 第三方登录的url */ @@ -29,6 +33,18 @@ public class MsSpringSocialConfigurer extends SpringSocialConfigurer{ SocialAuthenticationFilter filter = (SocialAuthenticationFilter) super.postProcess(object); //设置第三方登录的url filter.setFilterProcessesUrl(this.filterProcessUrl); + //如果后处理器不为空,我们就把filter传递给自定义的后处理器 + if (socialAuthenticationFilterPostProcessor != null){ + socialAuthenticationFilterPostProcessor.process(filter); + } return (T) filter; } + + public SocialAuthenticationFilterPostProcessor getSocialAuthenticationFilterPostProcessor() { + return socialAuthenticationFilterPostProcessor; + } + + public void setSocialAuthenticationFilterPostProcessor(SocialAuthenticationFilterPostProcessor socialAuthenticationFilterPostProcessor) { + this.socialAuthenticationFilterPostProcessor = socialAuthenticationFilterPostProcessor; + } } diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialAuthenticationFilterPostProcessor.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialAuthenticationFilterPostProcessor.java new file mode 100644 index 0000000..4f6aa81 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialAuthenticationFilterPostProcessor.java @@ -0,0 +1,10 @@ +package com.micro.fast.security.core.social; + +import org.springframework.social.security.SocialAuthenticationFilter; + +/** + * @author lsy + */ +public interface SocialAuthenticationFilterPostProcessor { + void process(SocialAuthenticationFilter socialAuthenticationFilter); +} diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialConfig.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialConfig.java index 4b27fa3..8de8b5a 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialConfig.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialConfig.java @@ -37,8 +37,11 @@ public class SocialConfig extends SocialConfigurerAdapter{ @Autowired private ConnectionFactoryLocator connectionFactoryLocator; - @Autowired + @Autowired(required = false) private ConnectionSignUp connectionSignUp; + + @Autowired(required = false) + private SocialAuthenticationFilterPostProcessor socialAuthenticationFilterPostProcessor; /** * * @param connectionFactoryLocator @@ -58,7 +61,7 @@ public class SocialConfig extends SocialConfigurerAdapter{ } /** - * springSocial的配置的bean + * springSocialconfigure的配置的bean * @return */ @Bean @@ -67,6 +70,8 @@ public class SocialConfig extends SocialConfigurerAdapter{ MsSpringSocialConfigurer msSpringSocialConfigurer = new MsSpringSocialConfigurer(social.getFilterProcessUrl()); // 设置第三方登录用户不存在的时候,注册或绑定的页面。如果设置为空则不跳转 msSpringSocialConfigurer.signupUrl(securityProperties.getBrowser().getSignUpUrl()); + //注入后处理器 + msSpringSocialConfigurer.setSocialAuthenticationFilterPostProcessor(socialAuthenticationFilterPostProcessor); return msSpringSocialConfigurer; } diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialProperties.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialProperties.java index d3e4b37..f7573d0 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialProperties.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialProperties.java @@ -2,7 +2,6 @@ package com.micro.fast.security.core.social; import com.micro.fast.security.core.social.qq.QQSocialProperties; import com.micro.fast.security.core.social.wechat.WeChatSocialProperties; -import com.micro.fast.security.core.social.wechat.api.WeChat; /** * 第三方登录配置类