oauth sso dev

This commit is contained in:
liquidjoo
2019-07-05 17:01:26 +09:00
parent 062269d122
commit 238bf1d77c
22 changed files with 330 additions and 75 deletions

View File

@@ -26,8 +26,6 @@ ext {
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-zuul'
implementation 'org.springframework.cloud:spring-cloud-starter-oauth2'
implementation 'org.springframework.cloud:spring-cloud-starter-security'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

View File

@@ -1,12 +1,20 @@
package io.bluemoon.zuuloauth2;
import io.bluemoon.zuuloauth2.utils.UserContextInterceptor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.client.RestTemplate;
import java.security.Principal;
import java.util.Collections;
import java.util.List;
@SpringBootApplication
@EnableZuulProxy
public class ZuulOauth2Application {
@@ -14,9 +22,29 @@ public class ZuulOauth2Application {
@LoadBalanced
@Bean
public RestTemplate getRestTemplate() {
// RestTemplate template = new RestTemplate();
// List interceptors = template.getInterceptors();
// if (interceptors == null) {
// template.setInterceptors(Collections.singletonList(new UserContextInterceptor()));
// } else {
// interceptors.add(new UserContextInterceptor());
// template.setInterceptors(interceptors);
// }
// return template;
return new RestTemplate();
}
@Controller
@RequestMapping("/")
public static class TestController {
@RequestMapping(method = RequestMethod.GET)
public String test(Principal principal) {
System.out.println(principal.getName());
System.out.println(principal.toString());
return "aa";
}
}
public static void main(String[] args) {
SpringApplication.run(ZuulOauth2Application.class, args);
}

View File

@@ -50,6 +50,7 @@ public class AuthenticationFilter extends ZuulFilter {
@Override
public Object run() throws ZuulException {
RequestContext ctx = RequestContext.getCurrentContext();
log.debug("what???{}", ctx);
return null;
}
}

View File

@@ -0,0 +1,21 @@
package io.bluemoon.zuuloauth2.utils;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;
@Component
@Getter
@Setter
public class UserContext {
public static final String CORREATION_ID = "tmx-correlation-id";
public static final String AUTH_TOKEN = "Authorization";
public static final String USER_ID = "tmx-user-id";
public static final String ORG_ID = "tmx-org-id";
private String correlationId;
private String authToken;
private String userId;
private String orgId;
}

View File

@@ -0,0 +1,36 @@
package io.bluemoon.zuuloauth2.utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@Component
@Slf4j
public class UserContextFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
log.debug("I am entering the licensing service id with auth token : ", httpServletRequest.getHeader("Authorization"));
UserContextHolder.getContext().setCorrelationId(httpServletRequest.getHeader(UserContext.CORREATION_ID));
UserContextHolder.getContext().setUserId(httpServletRequest.getHeader(UserContext.USER_ID));
UserContextHolder.getContext().setAuthToken(httpServletRequest.getHeader(UserContext.AUTH_TOKEN));
UserContextHolder.getContext().setOrgId(httpServletRequest.getHeader(UserContext.ORG_ID));
chain.doFilter(httpServletRequest, response);
}
@Override
public void destroy() {
}
}

View File

@@ -0,0 +1,26 @@
package io.bluemoon.zuuloauth2.utils;
import org.springframework.util.Assert;
public class UserContextHolder {
private static final ThreadLocal<UserContext> userContext = new ThreadLocal<UserContext>();
public static final UserContext getContext() {
UserContext context = userContext.get();
if (context == null) {
context = createEmptyContext();
userContext.set(context);
}
return userContext.get();
}
public static final void setContext(UserContext context) {
Assert.notNull(context, "Only non-null UserContext instances are permitted");
userContext.set(context);
}
public static final UserContext createEmptyContext() {
return new UserContext();
}
}

View File

@@ -0,0 +1,21 @@
package io.bluemoon.zuuloauth2.utils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import java.io.IOException;
public class UserContextInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
HttpHeaders headers = request.getHeaders();
headers.add(UserContext.CORREATION_ID, UserContextHolder.getContext().getCorrelationId());
headers.add(UserContext.AUTH_TOKEN, UserContextHolder.getContext().getAuthToken());
return execution.execute(request, body);
}
}

View File

@@ -1 +1,19 @@
server.port=8765
zuul.sensitive-headers=
zuul.routes.mk2-service.path=/api/**
zuul.routes.mk2-service.url=http://127.0.0.1:8082/api
zuul.routes.mk2-service.sensitive-headers=
#zuul.routes.mk2-service.sensitive-headers=Cookie,Set-Cookie,Authorization
zuul.routes.mk2-oauth.path=/mk-auth/**
#zuul.routes.mk2-oauth.url=https://59a7bc58.ngrok.io
zuul.routes.mk2-oauth.url=http://localhost:8081/mk-auth
zuul.routes.mk2-oauth.sensitive-headers=
#zuul.routes.mk2-oauth.sensitive-headers=Cookie,Set-Cookie,Authorization
#zuul.routes.mk2-oauth.path=/mk2auth/**
logging.level.web=debug
spring.http.log-request-details=true