2017-04-05 14 views
1

現在、私は春とneflixスタックを持つjavaでマイクロサービスを作成するいくつかのチュートリアルに従っています。 私が持っている1つの問題は、開始するすべてのサービスが生成されたパスワードで保護されているようです。したがって、別のマイクロサービスがこのために別のマイクロサービスを使用することはできません。 したがって、1つのマイクロサービスが残りの通話で別のマイクロサービスを消費する最も一般的な方法は何ですか?私はさらにapplication.ymlを調整しなければならないのですか?Spring Cloudマイクロサービスは、他のマイクロサービスでパスワード保護されたマイクロサービスを使用します。

ここは例です(非常に大まかで基本的です)。私が最初にサービスを利用しようとすると

@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); 
    } 
} 

:私は次の関数で別のものを呼び出すマイクロサービスがあります。他のマイクロサービスは、次のコードでそのコールを聞いている

@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); 
    } 
} 

をブラウザにはパスワードを入力するよう求められます。私がそれに入ると、私はそれにアクセスしましたが、最初のサービスが2番目にアクセスできなかったので、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();` 

これは、マイクロサービス間でテンプレート呼び出しを休止させるのに役立ちます(この残りのテンプレート呼び出しはそれに応じて変更されます)。

関連する問題