복붙노트

[SPRING] RestTemplate을 사용하여 보안 쿠키 설정

SPRING

RestTemplate을 사용하여 보안 쿠키 설정

RestTemplate 및 Jackson json 변환기를 사용하여 Restful JSON 서비스를 호출하려고합니다. 이제는 서비스를 호출하기 위해 보안 쿠키를 전달해야합니다. URLConnection을 사용하여이 작업을 수행 할 수 있습니다 (아래 코드 참조).

URL url= new URL("https://XXXXXXXX");

URLConnection yc = url.openConnection();
yc.setRequestProperty("SecurityCookie", ssocookie.getValue());</code>

이것에 대한 RestTemplate의 병렬 작업은 무엇입니까? 다음은 RestTemplate을 사용하여 Restful Service를 호출하는 데 사용 된 코드 단편입니다.

RestTemplate rest = new RestTemplate();  
InputBean input = new InputBean();  
input.setResource("SampleResource");  
HttpEntity<InputBean > entity = new HttpEntity<InputBean>(input);  
ResponseEntity<OutputBean> response1 = rest.postForEntity(
    "https://XXXXXXXXX", 
    entity, OutputBean.class);</code>

RestTemplate을 사용하여 서비스를 호출하는 동안 보안 쿠키를 전달하는 방법을 알아낼 수 없습니다. 이것에 대한 도움이 될 것입니다.

해결법

  1. ==============================

    1.RestTemplate을 사용자 지정 ClientHttpRequestFactory로 연결하여 기본 연결에 액세스하여 헤더, 속성 등을 설정할 수 있도록 RestTemplate에서 사용하는 기본 HttpURLConnection에 액세스 할 수 있습니다. ClientHttpRequestFactory는 새 연결을 만들 때 RestTemplate에서 사용됩니다.

    RestTemplate을 사용자 지정 ClientHttpRequestFactory로 연결하여 기본 연결에 액세스하여 헤더, 속성 등을 설정할 수 있도록 RestTemplate에서 사용하는 기본 HttpURLConnection에 액세스 할 수 있습니다. ClientHttpRequestFactory는 새 연결을 만들 때 RestTemplate에서 사용됩니다.

    특히 SimpleClientHttpRequestFactory 구현을 확장하고 prepareConnection () 메소드를 재정의 할 수 있습니다.

    public class YourClientHttpRequestFactory extends SimpleClientHttpRequestFactory {
      @Override
       protected void prepareConnection(HttpURLConnection connection, String httpMethod) {
         connection.setRequestProperty("SecurityCookie", ssocookie.getValue());
       }
    }
    
  2. ==============================

    2.요청 헤더를 사용하여이를 수행하는 방법을 설명하는 블로그 게시물을 작성했습니다.

    요청 헤더를 사용하여이를 수행하는 방법을 설명하는 블로그 게시물을 작성했습니다.

    http://springinpractice.com/2012/04/08/sending-cookies-with-resttemplate/

    코드는 다음과 같습니다.

    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.add("Cookie", "JSESSIONID=" + session.getValue());
    HttpEntity requestEntity = new HttpEntity(null, requestHeaders);
    ResponseEntity rssResponse = restTemplate.exchange(
        "https://jira.example.com/sr/jira.issueviews:searchrequest-xml/18107/SearchRequest-18107.xml?tempMax=1000",
        HttpMethod.GET,
        requestEntity,
        Rss.class);
    Rss rss = rssResponse.getBody();
    
  3. ==============================

    3.이것이 우리를 위해 일한 방법입니다.

    이것이 우리를 위해 일한 방법입니다.

    requestHeaders.add("Cookie", "JSESSIONID=" + session.getValue());
    
  4. from https://stackoverflow.com/questions/5796078/setting-security-cookie-using-resttemplate by cc-by-sa and MIT license