oauth sso dev
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user