Einen angepassten Interceptor für Trust-Associations entwickeln

Sie können die Interceptor-Klassenmethode definieren, die Sie verwenden möchten. WebSphere Application Server unterstützt zwei Trust-Association-Interceptor-Schnittstellen: com.ibm.wsspi.security.TrustAssociationInterceptor und com.ibm.wsspi.security.tai.TrustAssociationInterceptor.

Vorbereitende Schritte

Wenn Sie einen anderen Reverse-Proxy-Server als Tivoli WebSEAL verwenden, müssen Sie eine Implementierungsklasse für die Produkt-Interceptor-Schnittstelle für Ihren Proxy-Server angeben. In diesem Artikel wird die Schnittstelle "com.ibm.wsspi.security.TrustAssociationInterceptor.java" beschrieben, die Sie implementieren müssen.
Anmerkung: Die TAI-Schnittstelle (Trust Association Interceptor), com.ibm.wsspi.security.tai.TrustAssociationInterceptor, unterstützt mehrere neue Features und weicht von der vorhandenen Schnittstelle "com.ibm.wsspi.security.TrustAssociationInterceptor" ab.

Vorgehensweise

  1. Definieren Sie die Interceptor-Klassenmethode. WebSphere Application Server stellt die Interceptor-Java-Schnittstelle "com.ibm.wsspi.security.TrustAssociationInterceptor" bereit, das die folgenden Methoden definiert:
    • public boolean isTargetInterceptor(HttpServletRequest req) creates WebTrustAssociationException;.

      Mit der Methode isTargetInterceptor wird ermittelt, ob die Anforderung von dem mit dem Interceptor verbundenen Proxy-Server stammt. Der Implementierungscode muss das eingehende Anforderungsobjekt analysieren und feststellen, ob der Proxy-Server, von dem die Anforderung weitergeleitet wurde, für diesen Interceptor gültig ist. Das Ergebnis dieser Methode bestimmt, ob der Interceptor die Anforderung verarbeitet.

    • public void validateEstablishedTrust (HttpServletRequest req) creates WebTrustAssociationException;.

      Die Methode "validateEstablishedTrust" bestimmt, ob der Proxy-Server, von dem die Anforderung stammt, vertrauenswürdig ist. Diese Methode wird nach der Methode "isTargetInterceptor" aufgerufen. Der Implementierungscode muss den Proxy-Server authentifizieren. Das Authentifizierungsverfahren ist abhängig vom Proxy-Server. In der Produktimplementierung des WebSEAL-Servers ruft diese Methode beispielsweise die grundlegenden Authentifizierungsinformationen aus dem HTTP-Header ab und wertet diese Informationen anhand der von WebSphere Application Server verwendeten Benutzerregistry aus. Ist der Berechtigungsnachweis ungültig, löst der Code eine Ausnahme des Typs "WebTrustAssociationException" aus. Diese gibt an, dass der Proxy-Server nicht vertrauenswürdig ist und die Anforderung abgelehnt werden muss.

    • public String getAuthenticatedUsername(HttpServletRequest req) creates WebTrustAssociationException;.

      Die Methode "getAuthenticatedUsername" wird aufgerufen, wenn das Vertrauen zwischen dem Proxy-Server und WebSphere Application Server hergestellt wurde. Das Produkt hat die Proxy-Server-Authentifizierung der Anforderung akzeptiert und muss die Anforderung jetzt autorisieren. Zum Autorisieren der Anforderung muss der Name des ursprünglichen Anfordernden mithilfe einer Berechtigungsrichtlinie geprüft werden, um festzustellen, ob der Anfordernde die erforderlichen Berechtigungen besitzt. Der Implementierungscode für diese Methode muss den Benutzernamen aus dem Header der HTTP-Anforderung extrahieren und feststellen, ob dieser Benutzer berechtigt ist, auf die angeforderte Ressource zuzugreifen. In der Produktimplementierung für den WebSEAL-Server sucht die Methode beispielsweise nach einem Attribut iv-user im Header der HTTP-Anforderung und extrahiert die Benutzer-ID, die diesem Attribut zugeordnet, für die Berechtigung.

  2. Konfigurieren Sie den Interceptor. Damit ein Interceptor konfiguriert werden kann, muss der Interceptor die Klasse "com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor" erweitern. Implementieren Sie die folgenden Methoden:
    public int init (java.util.Properties props);
    Die Methode "init(Properties)" akzeptiert ein Objekt java.util.Properties, das die Gruppe von Eigenschaften enthält, die für die Initialisierung des Interceptor erforderlich sind. Alle für einen Interceptor (über den Link Angepasste Eigenschaften oder mit Scripting) definierten Attribute werden an diese Methode gesendet. Der Interceptor kann sich dann mit diesen Eigenschaften selbst initialisieren. In der Produktimplementierung des WebSEAL-Servers liest diese Methode beispielsweise die Hosts und Ports, so dass überprüft werden kann, ob eine eingehende Anforderung von anerkannten Hosts und Ports stammt. Der Rückgabewert 0 impliziert, dass der Interceptor fehlerfrei initialisiert wurde. Alle anderen Werte bedeuten, dass die Initialisierung nicht fehlerfrei verlaufen ist und dass der Interceptor ignoriert wird.

    Anwendbarkeit der folgenden Liste

    Gibt eine frühere Implementierung des Trust Association Interceptor einen anderen Fehlerstatus zurück, können Sie Ihre Implementierung an die Erwartungen anpassen oder eine der folgenden Änderungen vornehmen:
    • Fügen Sie die Eigenschaft com.ibm.wsspi.security.trustassociation.initStatus den angepassten Eigenschaften des Trust Association Interceptor hinzu. Setzen Sie die Eigenschaft auf den Wert, der die korrekte Initialisierung des Interceptors angibt. Alle anderen Werte deuten auf einen Fehler hin. Beim Auftreten eines Fehlers wird der entsprechende Trust Association Interceptor nicht verwendet.
    • Fügen Sie die Eigenschaft com.ibm.wsspi.security.trustassociation.ignoreInitStatus den angepassten Eigenschaften des Trust Association Interceptor hinzu. Setzen Sie diese Eigenschaft auf true, um WebSphere Application Server anzuweisen, den Status dieser Methode zu ignorieren. Wenn Sie diese Eigenschaft den angepassten Eigenschaften hinzufügen, überprüft WebSphere Application Server nicht den zurückgegebenen Status. Dieses Verhalten ist mit dem früherer Versionen von WebSphere Application Server vergleichbar.
    public void cleanup ();
    Diese Methode wird aufgerufen, wenn der Anwendungsserver gestoppt wird. Sie wird verwendet, um die Beendigung des Interceptor vorzubereiten.
    public void setVersion (String s);
    Diese Methode ist optional. Sie wird verwendet, um die Version zu setzen, und ist nur zu Informationszwecken bestimmt. Der Standardwert ist Unspecified.
    Sie müssen die folgenden Methoden konfigurieren, die von der angepassten Interceptor-Implementierung implementiert werden. Diese Liste zeigt nur die Methoden und keine Implementierungen.
    ********************************************************************
    import java.util.*;
    import javax.servlet.http.HttpServletRequest;
    import com.ibm.websphere.security.*;
    
    public class myTAIImpl extends WebSphereBaseTrustAssociationInterceptor
          implements TrustAssociationInterceptor
    {
    
          public myTAIImpl ()
          {
          }
    
    
          public boolean isTargetInterceptor (HttpServletRequest req)
              throws WebTrustAssociationException
          {
    
               // true zurückgeben, wenn dies der Ziel-Interceptor ist, andernfalls false zurückgeben
          }
    
    
          public TAIResult negotiateValidateandEstablishTrust (HttpServletRequest req, HttpServletResponse res)
               throws WebTrustAssociationFailedException
          {
               // Anforderung validieren und Vertrauensstellung definieren.
               // TAIResult erstellen und zurückgeben
    public int initialize (Properties props)
          {
               // Implementierung initialisieren. Bei Erfolg 0 zurückgeben,
               // bei Misserfolg 1 zurückgeben.
          }
    
         public String getVersion()     {
    	       //Version zurückgeben
         }  
    	
    	  	  public String getType()
         {
    	       //Typ zurückgeben
         }  
    
          public void cleanup ()
          {
               // Code bereinigen.
    
          }
            
    
    }     
    Anmerkung: Wenn die Methode "init(Properties)" wie zuvor beschrieben im angepassten Interceptor implementiert wird, gilt diese Anmerkung nicht für Ihre Implementierung, und Sie können mit dem nächsten Schritt fortfahren. Frühere Versionen von "com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor" enthalten die Methode "public int init (String propsfile)". Diese Methode ist nicht mehr erforderlich, weil die Interceptor-Eigenschaften nicht aus einer Datei gelesen werden. Die Eigenschaften werden jetzt über den Link Angepasste Eigenschaften für den Interceptor in der Administrationskonsole oder über Scripts angegeben. Anschließend werden die Eigenschaften Ihrer Implementierung in der Methode "init(Properties)" zur Verfügung gestellt. Für die Abwärtskompatibilität wird die Methode "init(String)" jedoch weiter unterstützt. Die Methode "init(String)" wird von der Standardimplementierung von "init(Properties)", wie im folgenden Beispiel gezeigt, aufgerufen.
    // Standardimplementierung der Methode init(Properties props). Sie sollte
       // mit einer angepassten Implementierung überschrieben werden.
       public int init (java.util.Properties props)
       {
          String type = 
           props.getProperty("com.ibm.wsspi.security.trustassociation.types");
          String classfile=
           props.getProperty("com.ibm.wsspi.security.trustassociation."
           +type+".config");
          if (classfile != null && classfile.length() > 0 ) {
             return init(classfile);
          } else {
             return -1;
          }
       }

    Ändern Sie Ihre Implementierung, und implementieren Sie die Methode "init(Properties)", anstatt die Methode "init(String propsfile)" zu verwenden. Wie im vorherigen Beispiel gezeigt, liest die Standardimplementierung die Eigenschaften, um die Eigenschaftendatei zu laden. Die Eigenschaft "com.ibm.wsspi.security.trustassociation.types" ruft die Datei ab, die die Eigenschaften enthält, indem .config an den Wert angefügt wird.

    Anmerkung: Die Methode "init(String)" kann nach wie vor an Stelle der Implementierung der Methode "init(Properties)" verwendet werden. Sie müssen lediglich den Namen der Ihrer Datei mit den Trust-Association-Eigenschaften in der Administrationskonsole über den Link Angepasste Eigenschaften für den Interceptor oder per Script eingeben. Sie können die Eigenschaft auf eine der folgenden Arten hinzufügen. Die erste Methode wird für die Abwärtskompatibilität mit früheren Versionen von WebSphere Application Server verwendet.
    Methode 1:
    Zum Abrufen des Dateinamens werden dieselben Eigenschaftsnamen wie im vorherigen Release verwendet. Der Dateiname wird durch die Verknüpfung von .config mit dem Wert der Eigenschaft "com.ibm.wsspi.security.trustassociation.types" erstellt.
    [IBM i][AIX Solaris HP-UX Linux Windows]Wenn die Datei den Namen myTAI.properties hat und im Verzeichnis Stammverzeichnis_des_Anwendungsservers/properties gespeichert ist, setzen Sie die folgenden Eigenschaften:
    [z/OS]Wenn die Datei den Namen myTAI.properties hat und im Verzeichnis /properties gespeichert ist, setzen Sie die folgenden Eigenschaften:
    Methode 2:
    Sie können die Eigenschaft com.ibm.wsspi.security.trustassociation.initPropsFile in den angepassten Eigenschaften des Trust Association Interceptor auf die Position der Datei setzen. Beispiel:
    [IBM i][AIX Solaris HP-UX Linux Windows]
    com.ibm.wsspi.security.trustassociation.initPropsFile=
    Stammverzeichnis_des_Anwendungsservers/properties/myTAI.properties
    [z/OS]
    com.ibm.wsspi.security.trustassociation.initPropsFile=
    Stammverzeichnis_des_Anwendungsservers/myTAI.properties

    Geben Sie den vorherigen Code in einer zusammenhängenden Zeile ein.

    [AIX Solaris HP-UX Linux Windows][IBM i]Die Position der Eigenschaftendatei ist vollständig qualifiziert (z. B. Stammverzeichnis_des_Anwendungsservers/properties/myTAI.properties). Da die Position in einer Umgebung von WebSphere Application Server Network Deployment anders sein können, müssen Sie Variablen wie ${USER_INSTALL_ROOT} verwenden, um auf das Installationsverzeichnis von WebSphere Application Server zu verweisen. Wenn die Datei beispielsweise den Namen myTAI.properties hat und sich im Verzeichnis Stammverzeichnis_des_Anwendungsservers/properties befindet, setzen Sie die folgenden Eigenschaften:

    [z/OS]Die Position der Eigenschaftendatei ist vollständig qualifiziert (z. B. Stammverzeichnis_des_Anwendungsservers/myTAI.properties). Da die Position in einer Umgebung von WebSphere Application Server Network Deployment anders sein können, müssen Sie Variablen wie ${USER_INSTALL_ROOT} verwenden, um auf das Installationsverzeichnis von WebSphere Application Server zu verweisen. Wenn die Datei beispielsweise den Namen myTAI.properties hat und im Verzeichnis /properties gespeichert ist, setzen Sie die folgenden Eigenschaften:
    • com.ibm.wsspi.security.trustassociation.types = myTAItype
    • [IBM i][AIX Solaris HP-UX Linux Windows]com.ibm.wsspi.security.trustassociation.myTAItype.config = c:/WebSphere/AppServer/properties/myTAI.properties
    • [z/OS]com.ibm.wsspi.security.trustassociation.myTAItype.config = Stammverzeichnis_des_Anwendungsservers/myTAI.properties
  3. Kompilieren Sie die Implementierung. Beispiel: Stammverzeichnis_des_Anwendungsservers/java/bin/javac -classpath Installationsstammverzeichnis/plugins/com.ibm.ws.runtime.jar;<Installationsstammverzeichnis>/dev/JavaEE/j2ee.jar myTAIImpl.java
    1. [AIX Solaris HP-UX Linux Windows][z/OS]Geben Sie die TAI-Klassendatei (Trust-Association-Interceptor) an, die beim Neustart des Servers verwendet werden soll. Speichern Sie die Datei entweder im Verzeichnis Stammverzeichnis_des_Anwendungsservers/classes, oder verwenden Sie die JVM-Systemeigenschaft -Dws.ext.dirs, um die Position der Datei anzugeben.
    2. [IBM i]Kopieren Sie die Klassendateien Ihres Trust Association Interceptor in ein Verzeichnis im Klassenpfad des Produkts. Kopieren Sie diese Klassendateien in das Verzeichnis Profilstammverzeichnis/classes.

      Sie müssen diese Klassendatei in das Verzeichnis Profilstammverzeichnis/classes jedes Knotens und jeder Zelle kopieren.

    3. Starten Sie alle Server erneut.
  4. Löschen Sie den WebSEAL-Standard-Interceptor in der Administrationskonsole, und klicken Sie auf Neu, um Ihren eigenen Interceptor hinzuzufügen. Vergewissern Sie sich, dass im Klassennamen Punkte als Trennzeichen verwendet werden und dass der Name im Klassenpfad enthalten ist.
  5. Klicken Sie auf den Link Angepasste Eigenschaften, um weitere Eigenschaften hinzuzufügen, die für die Initialisierung Ihres Interceptors erforderlich sind. Die Eigenschaften werden an die Methode "init(Properties)" Ihrer Implementierung übergeben, wenn diese die Klasse "com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor", wie im vorherigen Schritt beschrieben, erweitert.
  6. Speichern und synchronisieren Sie (sofern möglich) die Konfiguration.
  7. Starten Sie die Server erneut, damit Ihr Interceptor aktiviert wird.

Beispiel

Im Artikel "Sicherheit: Lernmaterial" finden Sie ein Referenzbeispiel für einen angepassten Interceptor.

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=tsec_waci
Dateiname:tsec_waci.html