Nachgeschaltete (Downstream-)JAX-RS-Ressourcen sichern

Sie können nachgeschaltete (Downstream-)JAX-RS-Ressourcen sichern, indem Sie die Methode "BasicAuth" für die Authentifizierung konfigurieren und den LTPA-JAX-RS-Sicherheitshandler verwenden, um SSO (Single Sign-on) für die Benutzerauthentifizierung zu nutzen.

Vorbereitende Schritte

Diese Task setzt voraus, dass Sie die folgenden Schritte bereits ausgeführt haben:
  • Sie haben Ihren Anwendungsserver in einem Zellenprofil definiert, das in die Deployment Manager-Zelle eingebunden ist.
  • Sie haben Ihre JAX-RS-Anwendung im Anwendungsserver installiert.
  • Sie haben die Sicherheit für Ihre JAX-RS-Anwendung aktiviert.
  • Sie haben Ihre JAX-RS-Anwendungen im Web-Container gesichert, indem Sie die Verwendung der Basisauthentifizierung für die Benutzerauthentifizierung in Ihren nachgeschalteten JAX-RS-Anwendungen konfiguriert haben.

Informationen zu diesem Vorgang

Beim Erstellen von JAX-RS-Ressourcen kann ein neuer LTPA-JAX-RS-Sicherheitshandler für eine nahtlose Authentifizierung in Aufrufen nachgeschalteter Ressourcen verwendet werden.

Wenn nachgeschaltete sichere JAX-RS-Ressourcen aufgerufen werden, muss sich die aufrufende Anwendung bei der Zielressource authentifizieren. Verwendet die Zielressource in einem nachgeschalteten Server die Methode "BasicAuth" für die Sicherheit, kann die aufrufende Anwendung Single Sign-on (SSO) für JAX-RS-Ressourcen verwenden. Bei der Verwendung von SSO wird ein authentifizierter Kontext in Aufrufen an nachgeschaltete Server weitergegeben. Sie können den LTPA-basierten Sicherheitsclienthandler für die Authentifizierung bei nachgeschalteten Ressourcen, die auf Server einer Zellenumgebung verteilt sind, verwenden.

Zur Veranschaulichung dieses Szenarios sei angenommen, dass Sie zwei Server in Ihrer Zelle und JAX-RS-Ressourcen in beiden Servern implementiert haben. Jetzt müssen Sie über eine Ressource in server1 eine andere Ressource aufrufen, die in server2 implementiert ist. Wenn die Ressourcen von server2 mit der Authentifizierungsmethode "BasicAuth" gesichert sind, verwenden Sie den LTPA-JAX-RS-Sicherheitshandler, um SSO zu nutzen und die Benutzerauthentifizierung nahtlos in Aufrufen an nachgeschaltete Server weiterzugeben, ohne Benutzer-IDs und Kennwörter in der Anwendung angeben oder verwalten zu müssen.

Abbildung 1. Nachgeschaltete (Downstream-)JAX-RS-Ressourcen sichernSie können nachgeschaltete (Downstream-)Ressourcen sichern, indem Sie die Authentifizierungsmethode BasicAuth konfigurieren und den LTPA-JAX-RS-Sicherheitshandler verwenden.

Verwenden Sie die folgenden Schritte, um die Benutzerauthentifizierung in einem nachgeschalteten Server mithilfe des JAX-RS-Sicherheitshandlers zur Buildzeit der Anwendung zu konfigurieren.

Vorgehensweise

  1. Verwenden Sie zur Buildzeit der Anwendung den LTPA-basierten Sicherheitshandler LtpaAuthSecurityHandler für die Authentifizierung bei nachgeschalteten Ressourcen, die auf die Server einer Zellenumgebung verteilt sind.
    • Wenn Sie für JAX-RS 1.1 die Klasse LtpaAuthSecurityHandler verwenden, müssen Sie sicherstellen, dass Sie die Zielressourcen für Ihre URLs mit dem HTTPS-Schema angeben und dass die Zielanwendung SSL unterstützt. Es wird dringend empfohlen, für das Senden von Benutzerberechtigungsnachweisen, einschließlich LTPA-Cookies, SSL-Verbindungen zu verwenden. Sie können die Voraussetzung für SSL in der Klasse LtpaAuthSecurityHandler explizit inaktivieren, indem Sie die Methode setSSLRequired im Sicherheitshandler mit dem Wert false aufrufen. Der Standardwert ist true.
      yourLtpaAuthSecHandler.setSSLRequired(false);
    • Für JAX-RS 2.0 können Sie die Clienteigenschaft com.ibm.ws.jaxrs.client.ltpa.handler verwenden, um das SSO-Cookie festzulegen und den Wert auf true zu setzen:
      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);
  2. Fügen Sie den Sicherheitshandler der Handlerkette hinzu.
  3. Erstellen Sie die REST-Clientinstanz.
  4. Erstellen Sie die Ressourceninstanz, mit der Sie interagieren möchten.
  5. Tragen Sie einen Wert ein, der Ihre Ressourcenadresse darstellt.

Ergebnisse

Sie haben sichere JAX-RS-Ressourcen in Ihrer Zellenumgebung so definiert, das beim Aufruf nachgeschalteter Ressourcen SSO verwendet und die Benutzerauthentifizierung nahtlos in Aufrufen nachgeschalteter Ressourcen weitergeben werden kann, ohne Benutzer-IDs und Kennwörter in der Anwendung angeben und verwalten zu müssen.

Beispiel

Für JAX-RS 1.1 veranschaulicht das folgende Code-Snippet die Verwendung dieses Sicherheitshandlers, der im JAX-RS-Client enthalten ist.
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();
 
 // Diesen Sicherheitshandler der Handlerkette hinzufügen.
 config.handlers(secHandler);

 // Die REST-Clientinstanz erstellen.
 RestClient client = new RestClient(config);

 // Ressourceninstanz erstellen, mit der Sie interagieren möchten.
 // Einen Wert für die Ressourcenadresse angeben.
 resource =  
  client.resource("http://localhost:8080/path/to/resource");

// Die Ressource kann jetzt aufgerufen werden. 
Für JAX-RS 2.0 veranschaulicht das folgende Code-Snippet die Verwendung dieses Sicherheitshandlers, der im JAX-RS-Client enthalten ist.
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;

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_impl_securejaxrs_downstreamresource
Dateiname:twbs_jaxrs_impl_securejaxrs_downstreamresource.html