維護下游 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 下游資源的安全您可以配置鑑別用的 BasicAuth 方法,以及使用 LTPA JAX-RS 安全處理程式,來維護下游資源的安全。

請使用下列步驟,以便在應用程式建置時期,使用 JAX-RS 安全處理程式,將使用者配置成接受下游伺服器的鑑別。

程序

  1. 在應用程式建置時期,使用 LTPA 型安全用戶端處理程式 LtpaAuthSecurityHandler,來接受散佈在伺服器上的下游資源的鑑別。
    • 若為 JAX-RS 1.1,當使用 LtpaAuthSecurityHandler 類別時,請確定您目標資源的 URL 使用 https 架構,且目標應用程式已啟用 SSL。在傳送使用者認證(包括 LTPA Cookie)時,強烈建議您使用 SSL 連線。您可以對安全處理程式呼叫設為 false 值的 setSSLRequired 方法,在 LtpaAuthSecurityHandler 類別中關閉 SSL 需求。預設值是 true
      yourLtpaAuthSecHandler.setSSLRequired(false);
    • 若為 JAX-RS 2.0,您可以使用 com.ibm.ws.jaxrs.client.ltpa.handler 用戶端內容,來設定 SSO Cookie,並將值設為 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 中使用 Secure Sockets Layer (SSL) 功能,則需要啟用 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. 換成代表您資源位址的值。

結果

您已定義安全的 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();
 
 // 將這個安全處理程式新增至處理程式鏈。
 config.handlers(secHandler);

 // 建立 REST 用戶端實例。
 RestClient client = new RestClient(config);

 // 建立您想與之互動的資源實例。
 // 換成代表您資源位址的值
 resource =
  client.resource("http://localhost:8080/path/to/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;

指示主題類型的圖示 作業主題

資訊中心條款 | 意見


「時間戳記」圖示 前次更新: 2016 年 4 月 15 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twbs_jaxrs_impl_securejaxrs_downstreamresource
檔名:twbs_jaxrs_impl_securejaxrs_downstreamresource.html