2017-04-05 2 views
1

현재 스프링과 neflix 스택이있는 Java에서 마이크로 서비스를 만드는 데 필요한 자습서를 따르고 있습니다. 내가 가진 한 가지 문제는 내가 시작한 모든 서비스가 생성 된 암호로 보호되는 것 같습니다. 따라서 다른 마이크로 서비스가이 때문에 다른 것을 사용하는 것은 불가능합니다. 하나의 마이크로 서비스가 나머지 통화를 통해 다른 마이크로 서비스를 사용하는 가장 좋은 방법은 무엇입니까? application.yml을 추가로 어떻게 조정해야합니까?스프링 클라우드 microservice는 다른 마이크로 서비스로 암호로 보호 된 마이크로 서비스를 사용합니다.

다음은 예제입니다 (매우 거칠고 기본적인).

@RestController 
@SpringBootApplication 
public class BookstoreApplication { 

    @RequestMapping(value = "/recommended") 
    public String readingList(){ 
     return "Spring in Action (Manning), Cloud Native Java (O'Reilly), Learning Spring Boot (Packt)"; 
    } 

    public static void main(String[] args) { 
     System.setProperty("spring.config.name", "springTut2CircuitBreakers/circuitApplication"); 
     SpringApplication.run(BookstoreApplication.class, args); 
    } 
} 

다른 마이크로 서비스가 다음 코드가 호출 듣고있다 : 나는 다음과 같은 기능을 가진 또 다른 하나를 호출하는 마이크로 서비스가

@RestController 
@SpringBootApplication 
public class ReadingApplication { 
    @RequestMapping("/to-read") 
    public String readingList() { 
     RestTemplate restTemplate = new RestTemplate(); 
     URI uri = URI.create("http://localhost:8090/recommended"); 

     return restTemplate.getForObject(uri, String.class); 
    } 

    public static void main(String[] args) { 
     System.setProperty("spring.config.name", "springTut2CircuitBreakers/readingApplication"); 
     SpringApplication.run(ReadingApplication.class, args); 
    } 
} 

내가 가진 첫 번째 서비스를 사용하려고 브라우저 암호를 입력하라는 메시지가 나타납니다. 내가 그것에 들어가면 나는 그것에 접근했다. 그러나 첫번째 서비스가 두 번째 (내가 믿는)에 접근 할 수 없었기 때문에 그것은 나에게 401의 오류를 보여준다. 그러면 어떻게 그 일이 일어나지 않도록 할 수 있습니까?

편집 : 고정 복사 붙여 넣기 오류 (중복 코드) 나는 보안이 두 서비스에 사용하는 경우 생각

답변

0

, 당신은 다음과 같은 나머지 템플릿 호출의 헤더에 세션 ID를 보낼 필요가

HttpHeaders requestHeaders = new HttpHeaders(); 
requestHeaders.add("Cookie", "JSESSIONID=" + session.getValue()); 
HttpEntity requestEntity = new HttpEntity(null, requestHeaders); 
ResponseEntity rssResponse = restTemplate.exchange(
    "http://localhost:8090/recommended", 
    HttpMethod.GET, 
    requestEntity, 
    Rss.class); 
Rss rss = rssResponse.getBody();` 

이것은 마이크로 서비스간에 나머지 템플릿 호출을 만드는 데 도움이 될 수 있습니다 (이에 따라 나머지 템플릿 호출이 그에 따라 변경됨).

관련 문제