Generierung von SPNEGO-Tokens für abgehende JAX-WS-Anforderungen unter Verwendung von Clientrichtliniensatzbindungen

JAX-WS-Clients können sich unter Verwendung einer Reihe verschiedener Mechanismen für die HTTP-Transportauthentifizierung authentifizieren.

JAX-WS-Clients können sich nicht nur bei Service-Provider-Anwendungen über die WS-Security-Authentifizierung authentifizieren, sie können außerdem eine Reihe von Mechanismen für die HTTP-Transportauthentifizierung zum Authentifizieren verwenden, z. B.:
  • Basisauthentifizierung unter Verwendung von Eigenschaften in den HTTP-Transportbindungen.
  • SSL/TLS-Clientauthentifizierung unter Verwendung von SSL-Transportbindungen.
  • SPNEGO-Authentifizierung unter Verwendung angepasster Eigenschaften in den HTTP-Transportbindungen.
Für das Abrufen der Kerberos-Berechtigungsnachweise, die für das abgehende SPNEGO-Token verwendet werden, gibt es fünf verschiedene Varianten:
  1. Ein unter Verwendung systemeigener Windows-Berechtigungsnachweise angefordertes Token. Wenn der WebSphere-Java™-Prozess auf einem Windows-System unter Verwendung einer Benutzer-ID mit Kerberos-Berechtigungsnachweisen ausgeführt wird, bewahrt das Windows-Betriebssystem ein Kerberos-TGT (Ticket Granting Ticket) für diesen Benutzer auf. Die JAX-WS-Clientlaufzeitumgebung verwendet dieses TGT, um ein SPNEGO-Token anzufordern, das für einen Service-Principal-Namen (SPN, ServicePrincipalName) für das Zielservicesystem angefordert werden kann.
  2. Ein unter Verwendung zwischengespeicherter Kerberos-Berechtigungsnachweise angefordetes Token. Auf einem System, an dem sich ein Benutzer (gewöhnlich unter Verwendung von Tools wie dem Java-Tool kinit) angemeldet hat, werden die Kerberos-Berechtigungsnachweise des Benutzers in einer Cachedatei mit dem Namen krb5cc_<Benutzer-ID> gespeichert. Alternativ kann eine Chiffrierschlüsseldatei, die den Schlüssel eines Benutzers enthält, mit einer Reihe von Tools, wie z. B. dem Microsoft-Tool ktpass oder dem Java-Tool ktab, erstellt werden. Diese Dateien enthalten eine Kopie des Kerberos-Schlüssels des Benutzers, der zum Abrufen eines TGT für diese Benutzer-ID verwendet werden kann. Die JAX-WS-Clientlaufzeitumgebung verwendet dieses TGT, um ein SPNEGO-Token anzufordern, das für einen Service-Principal-Namen (SPN, ServicePrincipalName) für das Zielservicesystem angefordert werden kann. Der WebSphere-Prozess muss so konfiguriert sein, dass die Datei krb5cc_<Benutzer-ID> oder die Chiffrierschlüsseldatei verwendet wird. Der Benutzerprincipalname (UserPrincipalName) für den zwischengespeicherten Berechtigungsnachweis in der Datei muss ebenfalls angegeben werden.
  3. Ein unter Verwendung eines Kerberos-Berechtigungsnachweises mit einer Benutzer-ID und einem Kennwort angefordertes Token. In diesem Szenario stellt die JAX-WS-Clientlaufzeitumgebung eine Verbindung zum Kerberos Key Distribution-Server unter Verwendung der angegebenen Benutzer-ID und des zugehörigen Kennworts her, um ein TGT abzurufen. Die Klasse fordert daraufhin das SPNEGO-Token mit diesem TGT an. Für die JAX-WS-Clientlaufzeitumgebung sind der SPN (ServicePrincipalName) für das Zielservicesystem sowie die Benutzer-ID und das Kennwort erforderlich.
  4. Ein unter Verwendung eines Kerberos-Nachweises, der in einem Java-Subjekt vorhanden ist, angefordertes Token. Das Subjekt kann einen Kerberos-Berechtigungsnachweis mit einer der folgenden Methoden abrufen:
    • Als an einer Webanwendung unter Verwendung eingehender SPNEGO-Webauthentifizierung angemeldeter Benutzer. Für diese Option muss nur die SPNEGO-Webauthentifizierung in WebSphere Application Server konfiguriert und aktiviert sein. Die dem eingehenden SPNEGO-Service zugeordnete Kerberos-Benutzer-ID muss für die vollständige Kerberos-Delegierung aktiviert sein.
    • Empfang einer JAX-WS-Web-Service-Anforderung mit einem WS-Security-Kerberos-Token. Die der eingehenden Web-Service-Anforderung zugeordnete Kerberos-Benutzer-ID muss für die vollständige Kerberos-Delegierung aktiviert sein.
    • Als mit einer Benutzer-ID und einem Kennwort angemeldeter Benutzer. WebSphere Application Server ist dabei für die LTPA- und Kerberos-Authentifizierung konfiguriert.
  5. Es wurde eine JAX-WS-Web-Service-Anforderung empfangen, die ein Benutzernamenstoken mit einem Kennwort enthält, und WebSphere Application Server ist für die LTPA- und Kerberos-Authentifizierung konfiguriert.
Alle fünf oben beschriebenen Varianten, die zum Abrufen der für das abgehende SPNEGO-Token verwendeten Kerberos-Berechtigungsnachweise verwendet werden können, erfordern die Definition angepasster Eigenschaften in den HTTP-Bindungen in den Clientrichtliniensatzbindungen.
Tabelle 1. Liste angepasster Eigenschaften, die in den HTTP-Bindungen in den Clientrichtliniensatzbindungen definiert werden müssen
Eigenschaftsname Wert Kommentare
com.ibm.websphere.webservices.spnego.enabled Boolescher Wert Muss auf true gesetzt sein, damit die SPNEGO-Authentifizierungsoptionen in der Laufzeitumgebung der JAX-WS-Clientbindung aktiviert werden.
com.ibm.websphere.webservices.spnegoOutboundSPN Zeichenfolge Muss auf den Namen des Service-Principals für den Web-Service-Provider gesetzt sein.
com.ibm.websphere.webservices.spnegoLoginMechanism Zeichenfolge Muss GSSUP, native, caller oder keytab sein.
com.ibm.websphere.webservices.JAASConfigName Zeichenfolge Wenn spnegoLoginMechanism auf den Chiffrierschlüssel gesetzt ist, muss diese Eigenschaft auf die JAAS-Anmeldekonfiguration gesetzt werden, die die zu verwendende Chiffrierschlüsseldatei angibt.
com.ibm.websphere.webservices.spnegoUPN Zeichenfolge Wenn spnegoLoginMechanism auf den Chiffrierschlüssel gesetzt ist, muss diese Eigenschaft auf den Namen des Benutzerprincipals des Schlüssels im zu verwendenden Chiffrierschlüssel gesetzt werden.
com.ibm.websphere.webservices.spnegoOutboundLifeTime Integer Wird dieser Wert nicht angegeben, wird das SPNEGO-Token für eine unbegrenzte Lebensdauer angefordert.
com.ibm.websphere.webservices.spnegoOutboundDelegate Boolescher Wert Wird dieser Wert auf true gesetzt und ist der Web-Service-SPN-Account für die Delegierung aktiviert, kann das an den Web-Service gesendete SPNEGO-Token delegiert werden.

Wenn die Eigenschaft spnegoLoginMechanism auf GSSUP gesetzt ist, werden die Benutzer-ID und das Kennwort über die Eigenschaften für die Basisauthentifizierung für abgehende Serviceanforderungen angefordert.

Wenn die Eigenschaft spnegoLoginMechanism auf caller gesetzt ist, wird der Kerberos-Berechtigungsnachweis vom Callersubjekt angefordert.

Wenn die Eigenschaft spnegoLoginMechanism auf Native gesetzt ist, wird der Kerberos-Berechtigungsnachweis vom Windows-Betriebssystem angefordert.

Anmerkungen für systemeigene Berechtigungsnachweise
Der Cache für Berechtigungsnachweise für Microsoft Kerberos-Anmeldesitzungen (MSLSA) stützt sich auf die Fähigkeit, das vollständige Kerberos-Ticket zu extrahieren, einschließlich des Sitzungsschlüssels aus dem Cache für Berechtigungsnachweise für Kerberos-Anmeldesitzungen (LSA). In einem Versuch, die Sicherheit zu erhöhen, hat Microsoft ein Feature implementiert, bei dem die Sitzungsschlüssel für Ticket Getting Tickets nicht mehr exportiert werden, da die Sitzungsschlüssel dadurch für IBM® JGSS unbrauchbar werden könnten, wenn versucht wird, weitere Servicetickets anzufordern. Dieses neue Feature ist in Windows 2003 Server und neueren Systemen enthalten. Microsoft stellt den folgenden Registrierungsschlüssel für die Inaktivierung dieses neuen Features zur Verfügung:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
AllowTGTSessionKey = 0x01 (DWORD)
Voraussetzungen in der Kerberos-Konfigurationsdatei
Die Kerberos-Konfigurationsdatei muss unabhängig vom Ansatz ordnungsgemäß konfiguriert sein.
  • Über die Zeilengruppen [realms] und [domain_realm] muss ordnungsgemäß konfiguriert sein, wie der WebSphere-Prozess Key Distribution Center (KDC) erreicht.
  • Die in der Zeilengruppe [libdefaults] zu verwendenden Verschlüsselungstypen müssen die Werte default_tkt_enctypes und default_tgs_enctypes angeben.
  • Die Zeilengruppe [libdefaults] muss die folgenden Angaben enthalten:
    • forwardable = true
    • renewable = true
    • noaddresses = true
  • Die Zeilengruppe [libdefaults] musss einen angemessenen Wert für clockskew definieren.

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



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