다운스트림 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 및 비밀번호를 제공하거나 관리하지 않고 다운스트림 호출에 대한 사용자 인증을 완벽하게 전파하십시오.

다음의 단계를 통해 애플리케이션 빌드 시 JAX-RS 보안 핸들러를 사용하여 다운스트림 서버에 대한 사용자 인증을 구성하십시오.
프로시저
결과
다운스트림 자원이 호출될 때 싱글 사인온을 사용하고 애플리케이션에서 사용자 ID 및 비밀번호를 제공하거나 관리하지 않고 다운스트림 호출에 대한 사용자 인증을 완벽하게 전파할 수 있도록 보안 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.

![[8.5.5.6 이상]](../ng_v8556.gif)
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;