Angepassten SIP-TAI entwickeln
Wenn Sie SIP-Anwendungen (Session Initiation Protocol) entwickeln, können Sie einen angepassten Trust-Association-Interceptor (TAI) erstellen.
Vorbereitende Schritte
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.extension.BaseTrustAssociationInterceptor erweitert und die Schnittstelle com.ibm.websphere.security.tai.extension.SIPTrustAssociationInterceptor implementiert. Diese Klassen sind in der Datei ${wlp.install.dir}/dev/api/ibm/ccom.ibm.websphere.appserver.api.sipServletSecurity.1.0_1.0.10.jar definiert.
- 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 kann eine Verbindung zu einer Datenbank hergestellt werden. WebTrustAssociationFailedException ist in der Datei ${wlp.install.dir}/lib/com.ibm.websphere.security_1.0.10.jar definiert. Der Wert des Arguments properties stammt aus der <trustAssociation>-Konfiguration.
- public void cleanup();
- Diese Methode wird aufgerufen, wenn der TAI seine Ressourcen freigeben kann. Er könnte beispielsweise eine Verbindung zu einer Datenbank schließen.
- public boolean isTargetProtocolInterceptor(SipServletMessage sipMsg) throws WebTrustAssociationFailedException;
- Ihr angepasster TAI kann 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 TAI-Ergebnis (TAIResult) zurück, das den Status
der derzeit verarbeiteten Nachricht und eine Benutzer-ID oder die eindeutige ID für den Benutzer enthält, der sich zu authentifizieren versucht.
Wenn die Authentifizierung erfolgreich ist, enthält das TAIResult den Status HttpServletResponse.SC_OK und einen
Principal. Schlägt die Authentifizierung fehl, enthält das TAIResult
den Rückkehrcode HttpServletResponse.SC_UNAUTHORIZED
(401), SC_FORBIDDEN (403) oder
SC_PROXY_AUTHENTICATION_REQUIRED (407).
Dies 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 SIP-Servletantwort (SipServletResponse) mit einer Abfrage generieren und senden.
Die Ausnahme kann für interne TAI-Fehler ausgelöst werden. In Tabelle 1
sind die Argumentwerte und entsprechenden Aktionen für die Methode negotiateValidateandEstablishProtocolTrust beschrieben. Die Ereignisabfolge ist im Folgenden beschrieben:
Tabelle 1. Beschreibung der Argumente und Aktionen für negotiateValidateandEstablishProtocolTrust. Diese Tabelle enthält 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 Ohne Wert des Arguments resp Ohne Eingehende Antwort Aktion für gültige Antwortberechtigungsnachweise TAIResult.status mit SC_OK und einer Benutzer-ID oder einer eindeutigen ID zurückgeben TAIResult.status mit SC_OK und einer Benutzer-ID oder einer eindeutigen 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 JSR289 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 Klasse com.ibm.wsspi.security.tai.TAIResult, die in der Datei ${wlp.install.dir}/lib/com.ibm.ws.security.authentication.tai_1.0.10.jar definiert ist, hat drei statische Methoden für die Erstellung eines TAIResult. Die TAIResult-Methoden vom Typ 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 folgendermaßen interpretiert:
Wenn der Wert HttpServletResponse.SC_OK ist, wird WebSphere mit dieser Antwort mitgeteilt, dass der TAI die Vereinbarung abgeschlossen hat. Die Antwort gibt außerdem an, dass WebSphere die Informationen im TAIResult zum Erstellen einer Benutzeridentität verwenden soll.
Die Bedeutung der erstellten TAIResults ist in Tabelle 2 beschrieben.
Tabelle 2. Bedeutung von TAIResults. In dieser Tabelle ist die Bedeutung von TAIResults beschrieben
TAIResult Erläuterung public static TAIResult create(int status); Gibt WebSphere Application Server einen Status an. Der Status darf nicht SC_OK sein, weil die Identitätsinformationen bereitgestellt werden. public static TAIResult create(int status, String principal); Gibt WebSphere Application Server einen Status an und gibt die Benutzer-ID oder die eindeutige ID für diesen Benutzer an. WebSphere erstellt durch Abfragen der Benutzerregistry Berechtigungsnachweise. public static TAIResult create(int status, String principal, Subject subject); Gibt WebSphere Application Server einen Status, die Benutzer-ID oder die eindeutige ID für den Benutzer und ein angepasstes Subjekt an. Wenn das Subjekt eine Hashtabelle enthält, wird der Principal ignoriert. Der Inhalt des Subjekts wird Teil des generierten Benutzersubjekts. - public String getVersion();
- Diese Methode gibt die Versionsnummer der aktuellen TAI-Implementierung zurück.
- public String getType();
- Der Rückgabewert dieser Methode ist implementierungsabhängig.
- Kompilieren Sie die Implementierung, nachdem Sie sie zur Erstellung einer eigenen SIP-TAI-JAR-Datei implementiert haben.
- Führen Sie die Schritte 3 - 4 aus, die im Abschnitt TAI in Liberty konfigurieren beschrieben sind, um den Liberty-Server für die Verwendung des SIP-TAIs zu konfigurieren.

Dateiname: twlp_custom_sip_tai.html