Einen eigenen Trust Association Interceptor (TAI) entwickeln
Wenn Sie SIP-Anwendungen (Session Initiation Protocol) entwickeln, können Sie einen eigenen Trust Association Interceptor (TAI) erstellen.
Vorbereitende Schritte
Sie können sich mit den allgemeinen TAI-Informationen im Dokument Trust-Associations vertraut machen. Die Entwicklung eines SIP-TAI gleicht der Entwicklung jedes anderen angepassten Interceptors, der in Trust-Associations verwendet wird. Ein eigener TAI für eine SIP-Anwendung ist nichts anderes als eine Erweiterung des TAI-Modells. Ausführlichere Informationen hierzu finden Sie im Artikel Einen eigenen Interceptor für Trust-Associations entwickeln.
Informationen zu diesem Vorgang
Der TAI kann von einer SIP-Servletanforderung oder einer SIP-Servletantwort aufgerufen werden. Wenn Sie einen eigenen SIP-TAI implementieren möchten, müssen Sie eine eigene Java-Klasse schreiben.
Vorgehensweise
- Schreiben Sie eine Java-Klasse, die die Klasse com.ibm.wsspi.security.tai.BaseTrustAssociationInterceptor erweitert und die Schnittstelle com.ibm.websphere.security.tai.SIPTrustAssociationInterceptor implementiert. Diese Klassen werden in der Datei WAS-Produktverzeichnis/plugins/com.ibm.ws.sip.container_1.0.0.jar definiert. WAS-Produktverzeichnis steht für den vollständig qualifizierten Pfadnamen des Verzeichnisses, in dem WebSphere Application Server installiert ist.
- Deklarieren Sie die folgenden Java-Methoden:
- public int initialize(Properties properties) throws WebTrustAssociationFailedException;
- Diese Methode wird vor der Verarbeitung der ersten Nachricht aufgerufen, damit die Implementierung alle benötigten Ressourcen zuordnen kann. Beispielsweise könnte sie eine Verbindung zu einer Datenbank herstellen. WebTrustAssociationFailedException ist in der Datei WAS-Produktverzeichnis/plugins/com.ibm.ws.runtime_1.0.0.jar definiert. Der Wert des Arguments properties stammt aus den angepassten Eigenschaften, die in diesem Schritt definiert werden.
- public void cleanup();
- Diese Methode wird aufgerufen, wenn der TAI die gehaltenen Ressourcen freigeben soll. Er könnte beispielsweise eine Verbindung zu einer Datenbank schließen.
- public boolean isTargetProtocolInterceptor(SipServletMessage sipMsg) throws WebTrustAssociationFailedException;
- Ihr TAI sollte diese Methode für die Bearbeitung der Nachricht sipMsg verwenden. Wenn die Methode false zurückgibt, ignoriert WebSphere Ihren TAI für sipMsg.
- public TAIResult negotiateValidateandEstablishProtocolTrust (SipServletRequest req, SipServletResponse resp) throws WebTrustAssociationFailedException;
- Diese Methode gibt ein TAIResult zurück, das den Status der derzeit verarbeiteten
Nachricht und eine Benutzer-ID oder eindeutige ID für den Benutzer angibt, der sich zu authentifizieren versucht.
Wenn die Authentifizierung erfolgreich ist, sollte das TAIResult den Status
HttpServletResponse.SC_OK und einen Principal enthalten. Wenn die Authentifizierung scheitert,
sollte das TAIResult den Rückkehrcode HttpServletResponse.SC_UNAUTHORIZED
(401), SC_FORBIDDEN (403) oder SC_PROXY_AUTHENTICATION_REQUIRED (407) enthalten. Die gibt nur an, ob der Container eine Nachricht für die weitere
Verarbeitung akzeptieren soll.
Zur Abfrage einer eingehenden Anforderung muss die TAI-Implementierung
ihre eigene SipServletResponse mit einer Abfrage generieren und senden.
Die Ausnahme sollte für interne TAI-Fehler ausgelöst werden. Der Artikel
Tabelle 1 enthält Informationen zu den
Argumentwerten und entsprechenden Aktionen für die Methode negotiateValidateandEstablishProtocolTrust.
Die Ereignisabfolge wird im Folgenden beschrieben:
Tabelle 1. Beschreibung der Argumente und Aktionen für negotiateValidateandEstablishProtocolTrust. Diese Tabelle eine Beschreibung der Argumente und Aktionen für negotiateValidateandEstablishProtocolTrust
Argument oder Aktion Für eine SIP-Anforderung Für eine SIP-Antwort Wert des Arguments req Eingehende Anforderung Null Wert des Arguments resp Null Eingehende Antwort Aktion für gültige Antwortberechtigungsnachweise TAIResult.status mit SC_OK und Benutzer-ID oder eindeutiger ID zurückgeben TAIResult.status mit SC_OK und Benutzer-ID oder eindeutiger ID zurückgeben Aktion für ungültige Antwortberechtigungsnachweise TAIResult mit Status 4xx zurückgeben TAIResult mit Status 4xx zurückgeben - Der SIP-Container ordnet Erstanforderungen Anwendungen zu, indem er die Regeln im Implementierungsdeskriptor der einzelnen Anwendungen verwendet. Nachfolgende Nachrichten werden basierend auf den Mechanismen von JSR 116 zugeordnet.
- Wenn eine der Anwendungen Sicherheit voraussetzt, ruft der SIP-Container alle definierten TAI-Implementierungen für die Nachricht auf.
- Wenn die Nachricht die Sicherheitsprüfung besteht, ruft der Container die entsprechenden Anwendungen auf.
Die in der Datei WAS-Produktverzeichnis/plugins/com.ibm.ws.runtime_1.0.0.jar definierte Klasse com.ibm.wsspi.security.tai.TAIResult hat drei statische Methoden für das Erstellen eines TAIResult. Die TAIResult-Methoden create verwenden als ersten Parameter einen Parameter vom Typ int. WebSphere Application Server erwartet, dass das Ergebnis ein gültiger Rückkehrcode der HTTP-Anforderung ist. Das Ergebnis wird auf folgende Art und Weise interpretiert:
Wird der Wert "HttpServletResponse.SC_OK" zurückgegeben, wird WebSphere Application Server mit dieser Antwort mitgeteilt, dass TAI die Vereinbarung abgeschlossen hat. Die Antwort gibt auch an, dass WebSphere Application Server die Informationen im TAIResult-Ergebnis zum Erstellen einer Benutzeridentität verwenden soll.
Die Bedeutungen der erstellten TAIResults sind in Tabelle 2 beschrieben.
Tabelle 2. Bedeutung von TAIResults. In dieser Tabelle sind die Bedeutungen von TAIResults aufgelistet.
TAIResult Erläuterung public static TAIResult create(int status); Zeigt WebSphere Application Server einen Status an. Der Status darf nicht SC_OK sein, weil die Informationen zur Identität bereitgestellt werden. public static TAIResult create(int status, String principal); Zeigt WebSphere Application Server einen Status an und stellt die Benutzer-ID oder die eindeutige ID für diesen Benutzer bereit. WebSphere Application Server erstellt durch Abfragen der Benutzerregistry Berechtigungsnachweise. public static TAIResult create(int status, String principal, Subject subject); Zeigt WebSphere Application Server einen Status an, die Benutzer-ID oder die eindeutige ID für den Benutzer sowie ein angepasstes Subjekt. Enthält das Subjekt eine Hash-Tabelle, wird der Principal ignoriert. Der Inhalt des Subjekts (Subject) wird Teil des resultierenden Benutzersubjekts. - public String getVersion();
- Diese Methode gibt die Versionsnummer der aktuellen TAI-Implementierung zurück.
- public String getType();
- Der Rückgabewert dieser Methode ist implementation-dependent.
- Kompilieren Sie die Implementierung, nachdem Sie sie implementiert haben.
Beispiel: /opt/WebSphere/AppServer/java/bin/javac -classpath
/opt/WebSphere/AppServer/plugins/com.ibm.ws.runtime_1.0.0.jar;/opt/WebSphere/AppServer/dev/JavaEE/j2ee.jar;/opt/WebSphere/AppServer/plugins/com.ibm.ws.sip.container_1.0.0.jar
myTAIImpl.java
- Kopieren Sie für jeden Server in einem Cluster die Klassendatei in ein Verzeichnis im WebSphere-Klassenpfad (vorzugsweise in das Verzeichnis WAS-Produktverzeichnis/plugin/).
- Starten Sie alle Server erneut.
- 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.
- Klicken Sie auf den Link Angepasste Eigenschaften, um weitere Eigenschaften hinzuzufügen, die für die Initialisierung Ihres Interceptors erforderlich sind. Diese Eigenschaften werden an die Methode initialize(Properties properties) Ihrer Implementierung übergeben, wenn sie, wie im vorherigen Schritt beschrieben, die Klasse com.ibm.websphere.security.WebSphereBaseTrustAssociationInterceptor erweitert.
- Speichern und synchronisieren Sie (sofern möglich) die Konfiguration.
- Starten Sie die Server erneut, damit Ihr Interceptor aktiviert wird.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsip_devctai
Dateiname:tsip_devctai.html