diff --git a/mall-ebtp-cloud-security-starter/pom.xml b/mall-ebtp-cloud-security-starter/pom.xml
index 2de5178..84a46c7 100644
--- a/mall-ebtp-cloud-security-starter/pom.xml
+++ b/mall-ebtp-cloud-security-starter/pom.xml
@@ -4,33 +4,31 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4.0.0
+
com.chinaunicom.ebtp
mall-ebtp-cloud-parent
0.0.1
../mall-ebtp-cloud-parent
+
com.chinaunicom.ebtp
mall-ebtp-cloud-security-starter
0.0.1
mall-ebtp-cloud-security-starter
-
- cn.chinaunicom.sdsi
- unifast-security
-
org.springframework.cloud
spring-cloud-security
- org.springframework.cloud
- spring-cloud-starter-oauth2
+ org.springframework.boot
+ spring-boot-starter-web
- org.springframework.security.oauth
- spring-security-oauth2
+ org.apache.commons
+ commons-lang3
diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/SecurityStarterConfiguration.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/SecurityStarterConfiguration.java
index 74f4749..569732e 100644
--- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/SecurityStarterConfiguration.java
+++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/SecurityStarterConfiguration.java
@@ -1,10 +1,17 @@
package com.chinaunicom.mall.ebtp.cloud.security.starter;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
+import org.springframework.web.client.RestTemplate;
@Configuration
@PropertySource("classpath:security-configuration.properties")
public class SecurityStarterConfiguration {
+ @Bean
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+
}
diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java
new file mode 100644
index 0000000..471a1bf
--- /dev/null
+++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java
@@ -0,0 +1,11 @@
+package com.chinaunicom.mall.ebtp.cloud.security.starter.common;
+
+/**
+ * @author Ajaxfan
+ */
+public interface Constants {
+
+ public static final String AUTHORIZATION_HEADER = "Authorization";
+ public static final String TOKEN_PREFIX = "Bearer ";
+
+}
diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/config/BrowserSecurityConfig.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/config/BrowserSecurityConfig.java
new file mode 100644
index 0000000..6c7dcef
--- /dev/null
+++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/config/BrowserSecurityConfig.java
@@ -0,0 +1,37 @@
+package com.chinaunicom.mall.ebtp.cloud.security.starter.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
+
+import com.chinaunicom.mall.ebtp.cloud.security.starter.filter.TokenAuthenticationFilter;
+
+/**
+ * 安全设置
+ *
+ * @author Ajaxfan
+ */
+@EnableWebSecurity
+@EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true, securedEnabled = true)
+public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter {
+
+ @Bean
+ public TokenAuthenticationFilter authenticationTokenFilterBean() {
+ return new TokenAuthenticationFilter();
+ }
+
+ /**
+ * 向Filter链中插入自定义TokenFilter
+ *
+ * @param http
+ * @throws Exception
+ */
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
+ }
+
+}
diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java
new file mode 100644
index 0000000..4fde9e3
--- /dev/null
+++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java
@@ -0,0 +1,76 @@
+package com.chinaunicom.mall.ebtp.cloud.security.starter.filter;
+
+import java.io.IOException;
+import java.util.Map;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.RegExUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants;
+
+/**
+ * 请求Token拦截
+ *
+ * @author Ajaxfan
+ */
+public class TokenAuthenticationFilter extends OncePerRequestFilter {
+
+ private @Autowired RestTemplate restTemplate;
+ private @Value("${user.auth.resource.token-info-uri}") String token_uri;
+
+ /**
+ * @param request
+ * @param response
+ * @param filterChain
+ * @throws ServletException
+ * @throws IOException
+ */
+ @Override
+ protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response,
+ final FilterChain filterChain) throws ServletException, IOException {
+ // 提取request头信息
+ final String header = request.getHeader(Constants.AUTHORIZATION_HEADER);
+
+ // 检查请求头是否包含 Bearer 前缀
+ if (StringUtils.startsWith(header, Constants.TOKEN_PREFIX)) {
+ // 提取 token 信息
+ String authToken = RegExUtils.replaceAll(header, Constants.TOKEN_PREFIX, "");
+
+ // 通过token读取用户信息
+ SecurityContextHolder.getContext().setAuthentication(getAuthentication(authToken));
+ }
+ filterChain.doFilter(request, response);
+ }
+
+ /**
+ * @param token
+ * @return
+ */
+ private Authentication getAuthentication(String token) {
+ ResponseEntity