Angepassten SIP-TAI entwickeln

Wenn Sie SIP-Anwendungen (Session Initiation Protocol) entwickeln, können Sie einen angepassten Trust-Association-Interceptor (TAI) erstellen.

Vorbereitende Schritte

Die Entwicklung eines SIP-TAIs ähnelt der Entwicklung anderer angepasster Interceptors, die in Trust-Associations verwendet werden. Ein angepasster TAI für eine SIP-Anwendung ist nichts anderes als eine Erweiterung des TAI-Modells.

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

  1. 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.
  2. 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.
    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
    Die Ereignisabfolge ist im Folgenden beschrieben:
    1. 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.
    2. Wenn eine der Anwendungen Sicherheit voraussetzt, ruft der SIP-Container alle definierten TAI-Implementierungen für die Nachricht auf.
    3. Wenn die Nachricht die Sicherheitsprüfung besteht, ruft der Container die entsprechenden Anwendungen auf.
    Ihre TAI-Implementierung kann eine SIP-Nachricht zwar ändern, aber die geänderte Nachricht kann im Anforderungszuordnungsprozess nicht verwendet werden, da dieser abgeschlossen wird, bevor der Container den TAI aufruft.

    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.
  3. Kompilieren Sie die Implementierung, nachdem Sie sie zur Erstellung einer eigenen SIP-TAI-JAR-Datei implementiert haben.
  4. 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.

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_custom_sip_tai.html