다운스트림 JAX-RS 자원 보안

인증을 위해 BasicAuth 메소드를 구성하고 LTPA JAX-RS(Java™ API for RESTful Web Services) 보안 핸들러를 사용하여 사용자 인증을 위해 싱글 사인온을 활용하여 다운스트림 JAX-RS 자원에 보안을 설정할 수 있습니다.

시작하기 전에

이 태스크에서는 다음의 단계를 완료했다고 가정합니다.
  • JAX-RS 애플리케이션을 애플리케이션 서버에 설치했습니다.
  • JAX-RS 애플리케이션에 대해 보안을 사용으로 설정했습니다.
  • 사용자 인증을 위해 기본 인증(BasicAuth) 메소드를 사용하도록 다운스트림 JAX-RS 애플리케이션을 구성하여 웹 컨테이너에서 JAX-RS 애플리케이션에 보안을 설정했습니다.

이 태스크 정보

JAX-RS 자원을 작성하는 경우 새 LTPA JAX-RS 보안 핸들러를 사용하여 다운스트림 자원 호출에 대해 완벽하게 인증할 수 있습니다.

다운스트림 보안 JAX-RS 자원을 호출하는 경우 호출하는 애플리케이션은 대상 자원에 대해 인증해야 합니다. 다운스트림 서버의 대상 자원이 보안을 위해 BasicAuth 메소드를 사용하는 경우 호출하는 애플리케이션은 JAX-RS 자원에 대해 싱글 사인온(SSO)을 활용할 수 있습니다. 싱글 사인온을 사용하는 경우 인증된 컨텍스트는 다운스트림 호출을 따라 전파됩니다. LTPA 기반 보안 클라이언트 핸들러를 사용하여 의 서버에서 분배되는 다운스트림 자원에 대해 인증할 수 있습니다.

이 시나리오를 설명하기 위해 셀에 두 개의 서버가 있고 이 두 서버 모두에 JAX-RS 자원을 배치했다고 가정하십시오. server1의 한 자원에서 server2에 배치되는 다른 자원을 호출해야 한다고 가정해 봅니다. 인증을 위해 BasicAuth 메소드를 사용하여 server2 자원에 보안이 설정되면 LTPA JAX-RS 보안 핸들러를 사용하여 싱글 사인온을 활용하고 애플리케이션에서 사용자 ID 및 비밀번호를 제공하거나 관리하지 않고 다운스트림 호출에 대한 사용자 인증을 완벽하게 전파하십시오.

그림 1. JAX-RS 다운스트림 자원 보안인증을 위해 BasicAuth 메소드를 구성하고 LTPA JAX-RS 보안 핸들러를
사용하여 다운스트림 자원에 보안을 설정할 수 있습니다.

다음의 단계를 통해 애플리케이션 빌드 시 JAX-RS 보안 핸들러를 사용하여 다운스트림 서버에 대한 사용자 인증을 구성하십시오.

프로시저

  1. 애플리케이션 빌드 시 LTPA 기반 보안 클라이언트 핸들러(LtpaAuthSecurityHandler)를 사용하여 의 서버에서 분배되는 다운스트림 자원에 대해 인증하십시오.
    • JAX-RS 1.1의 경우 LtpaAuthSecurityHandler 클래스를 사용할 때는 URL에 대해 https 스킴을 사용하여 자원을 대상으로 지정하며 대상 애플리케이션에 SSL이 사용으로 설정되어 있는지 확인하십시오. LTPA 쿠키를 포함한 사용자 신임 전송 시 SSL 연결을 사용하도록 적극 권장합니다. false 값을 사용하여 보안 핸들러에서 setSSLRequired 메소드를 호출하여 LtpaAuthSecurityHandler 클래스에서 SSL에 대한 요구사항을 명시적으로 끌 수 있습니다. 기본값은 true입니다.
      yourLtpaAuthSecHandler.setSSLRequired(false);
    • JAX-RS 2.0의 경우 com.ibm.ws.jaxrs.client.ltpa.handler 클라이언트 특성을 사용하여 SSO 쿠키를 설정하고 값을 true로 설정할 수 있습니다.
      ClientBuilder cb = ClientBuilder.newBuilder();
      
              Client c = cb.build();
              c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");
              WebTarget t = c.target("http://" + serverIP + ":" + serverPort + "/" + moduleName + "/ComplexClientTest/ComplexResource");
              String res = t.path("echo1").path("test1").request().get(String.class);
              c.close();
              ret.append(res);
    JAX-RS 2.0에서 SSL(Secure Sockets Layer) 기능을 사용하려면 ssl-1.0 또는 appSecurity-2.0 기능을 사용으로 설정해야 합니다. LTPA 토큰 기능의 경우 appSecurity-2.0 기능이 반드시 필요합니다.
    참고: ssl-1.0 기능은 appSecurity-2.0 기능의 하위 기능입니다. jaxrsClient-2.0 기능 및 ssl-1.0 기능을 사용으로 설정하면 자동으로 appSecurity-2.0 기능이 사용으로 설정됩니다.
  2. 핸들러 체인에 보안 핸들러를 추가하십시오.
  3. REST 클라이언트 인스턴스를 작성하십시오.
  4. 상호작용할 자원 인스턴스를 작성하십시오.
  5. 자원 주소를 나타내는 값을 대체하십시오.

결과

다운스트림 자원이 호출될 때 싱글 사인온을 사용하고 애플리케이션에서 사용자 ID 및 비밀번호를 제공하거나 관리하지 않고 다운스트림 호출에 대한 사용자 인증을 완벽하게 전파할 수 있도록 보안 JAX-RS 자원을 정의했습니다.

JAX-RS 1.1의 경우 다음 코드 스니펫은 JAX-RS 클라이언트의 일부로 패키지되는 이 보안 핸들러를 사용하는 방법을 보여줍니다.
import org.apache.wink.client.Resource;
 import org.apache.wink.client.RestClient;
 import org.apache.wink.client.ClientConfig;
 import org.apache.wink.client.handlers.LtpaAuthSecurityHandler;

 ClientConfig config = new ClientConfig();
 LtpaAuthSecurityHandler secHandler = new LtpaAuthSecurityHandler();
 
 // Add this security handler to the handlers chain.
 config.handlers(secHandler);

 // Create the REST client instance. 
 RestClient client = new RestClient(config);

 // Create the resource instance that you want to interact with. 
 // Substitute a value representing your resource address
 resource =  
  client.resource("http://localhost:8080/path/to/resource");

// Now you are ready to begin calling your resource.
JAX-RS 2.0의 경우 다음 코드 스니펫은 JAX-RS 클라이언트의 일부로 패키지되는 이 보안 핸들러를 사용하는 방법을 보여줍니다.
ClientBuilder cb = ClientBuilder.newBuilder();
Client c = cb.build();
c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");

String res = "";
res = c.target("http://" + serverIP + ":" + serverPort + "/" + moduleName + "/rest/ltpa")
                            .request()
c.close();
return res;

주제의 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_impl_securejaxrs_downstreamresource
파일 이름: twbs_jaxrs_impl_securejaxrs_downstreamresource.html