維護下游 JAX-RS 資源的安全
您可以配置鑑別用的 BasicAuth 方法,以及使用 LTPA JAX-RS 安全處理程式,以利用單一登入進行使用者鑑別,來維護下游 Java™ API for RESTful Web Services (JAX-RS) 資源的安全。
開始之前
這項作業假設您已完成下列步驟:
- 已將 JAX-RS 應用程式安裝到應用程式伺服器。
- JAX-RS 應用程式已啟用安全。
- 已將下游 JAX-RS 應用程式配置成使用基本鑑別 (BasicAuth) 方法進行使用者鑑別,來維護 JAX-RS 應用程式在 Web 儲存器中的安全。
關於這項作業
編製 JAX-RS 資源時,可以使用新的 LTPA JAX-RS 安全處理程式,在呼叫下游資源期間平順無礙地進行鑑別。
當呼叫下游安全 JAX-RS 資源時,呼叫端應用程式需要接受目標資源的鑑別。如果下游伺服器上的目標資源使用 BasicAuth 方法來維護安全,呼叫端應用程式可以將單一登入 (SSO) 運用於 JAX-RS 資源。利用單一登入,鑑別環境定義會傳送給所有的下游呼叫程序。您可以使用 LTPA 型安全用戶端處理程式,來接受散佈在伺服器上的下游資源的鑑別。
為了說明這種情況,在此假設您的 Cell 中有兩部伺服器,且這兩部伺服器上都部署了 JAX-RS 資源。假設您需要從 server1 上的某個資源,呼叫部署在 server2 上的另一個資源。當使用鑑別用的 BasicAuth 方法來維護 server2 資源的安全時,可透過 LTPA JAX-RS 安全處理程式來使用單一登入,並且平順無礙地將使用者鑑別傳送給下游呼叫程序,而不必在應用程式中提供或管理使用者身分和密碼。
圖 1. 維護 JAX-RS 下游資源的安全

請使用下列步驟,以便在應用程式建置時期,使用 JAX-RS 安全處理程式,將使用者配置成接受下游伺服器的鑑別。
程序
結果
您已定義安全的 JAX-RS 資源,因此,當呼叫下游資源時,就能使用單一登入,並且平順無礙地將使用者鑑別傳送給下游呼叫程序,而不必在應用程式中提供或管理使用者身分和密碼。
範例
在 JAX-RS 1.1 方面,下列程式碼 Snippet 示範如何使用這個隨附於 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 方面,下列程式碼 Snippet 示範如何使用這個隨附於 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;