Sie können einen Liberty-Server so konfigurieren, dass er das Kerberos-Feature für eingeschränkte Delegierung für SPNEGO-Ausgangstokens unterstützt.
Vorbereitende Schritte
Vergewissern Sie sich, dass die SPNEGO-Webauthentifizierung konfiguriert ist.
Es wird nur IBM® JDK 1.8 und höher unterstützt.
Informationen zu diesem Vorgang
Die Kerberos 5-Erweiterung "S4U" (Services for Users, Services für Benutzer), die auch als eingeschränkte Delegierung bezeichnet wird,
setzt sich aus zwei Bestandteilen zusammen:
- S4U2self
Mit dieser Erweiterung kann ein Liberty-Server ein Service-Ticket an sich selbst für einen Benutzer anfordern. Hierzu kann jede Form der Authentifizierung, die von Liberty unterstützt wird,
verwendet werden. S4U2self ist die
Kerberos-Erweiterung für Protokollübergang.
- S4U2proxy
Mit dieser Erweiterung kann ein Liberty-Server Service-Tickets an anerkannte Services für einen Benutzer anfordern. Diese
Service-Tickets werden mit dem Service-Ticket des Benutzers an den Liberty-Service angefordert. Die Services werden vom
Kerberos-KDC-Administrator (Key Distribution Center) eingeschränkt.
S4U2proxy ist die Kerberos-Erweiterung für eingeschränkte Delegierung.
Das Feature für eingeschränkte Delegierung stellt die folgenden APIs zum Erstellen des SPNEGO-Ausgangstokens
für Back-End-Services bereit, die die SPNEGO-Authentifizierung unterstützten, wie z. B. .NET-Server und andere Liberty-Server.
- S4U2self-API:
com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorizationUsingS4U2self()
- S4U2proxy-API:
com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorization()
In den folgenden Schritten wird dieselbe Beispielsystemkonfiguration wie im Abschnitt
SPNEGO-Authentifizierung in
Liberty konfigurieren und im Abschnitt Single Sign-on für HTTP-Anforderungen mit SPNEGO-Webauthentifizierung verwendet.
Vorgehensweise
- Aktualisieren Sie auf im Microsoft-Domänencontroller myAdMachine.example.com den
Service-Principal-Namen (SPN), den Sie zum Validieren des SPNEGO-Eingangstokens verwenden. Aktualisieren Sie den SPN
HTTP/myLibertyMachine.example.com beispielsweise wie folgt:
- Führen Sie die folgenden Schritte aus, um S4U2self zu verwenden:
- Öffnen Sie den Benutzeraccount, der dem SPN des Delegierten zugeordnet ist.
- Klicken Sie auf das Register "Attribute Editor".
- Ändern Sie die Eigenschaft userAccountControl wie folgt:
- Die Einstellung für die Anerkennung für die Authentifizierungsdelegierung (0x1000000 bzw. die Aufzählung TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION) muss angegeben sein.
- Legen Sie den anerkannten Service fest:
- Klicken Sie im Benutzeraccount auf das Register "Delegation".
- Wählen Sie das Optionsfeld Trust this user for delegation to specified services only aus.
- Wählen Sie das Optionsfeld Use any authentication protocol aus.
- Klicken Sie auf Add, um den anerkannten Service hinzuzufügen.
- Klicken Sie auf Users or Computers.
- Geben Sie den für den anerkannten Service zu verwendenden SPN ein.
- Klicken Sie auf Check Names und vergewissern Sie sich, dass der richtige Objektname gefunden wurde.
- Klicken Sie auf OK.
- Wählen Sie SPN specified aus und klicken Sie auf OK.
- Führen Sie die folgenden Schritte aus, um S4U2proxy zu verwenden:
- Öffnen Sie den Benutzeraccount, der dem SPN des Delegierten zugeordnet ist.
- Klicken Sie auf das Register "Attribute Editor".
- Ändern Sie die Eigenschaft userAccountControl wie folgt:
- Die Einstellung für die Anerkennung für die Authentifizierungsdelegierung (0x1000000 bzw. die Aufzählung TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION) muss angegeben sein.
- Legen Sie den anerkannten Service fest:
- Klicken Sie im Benutzeraccount auf das Register "Delegation".
- Wählen Sie das Optionsfeld Trust this user for delegation to specified services only aus.
- Klicken Sie auf Add, um den anerkannten Service hinzuzufügen.
- Klicken Sie auf Users or Computers.
- Geben Sie den für den anerkannten Service zu verwendenden SPN ein.
- Klicken Sie auf Check Names und vergewissern Sie sich, dass der richtige Objektname gefunden wurde.
- Klicken Sie auf OK.
- Wählen Sie SPN specified aus und klicken Sie auf OK.
- Aktivieren Sie auf der Liberty-Servermaschine (myLibertyMachine.example.com) das Feature für eingeschränkte
Delegierung, indem Sie dem Element
featureManager das Feature constrianedDelegation-1.0 hinzufügen und das JAAS-Kerberos-Anmeldemodul in der Datei server.xml konfigurieren.
<featureManager>
<feature>spnego-1.0</feature>
<feature>contrainedDelegation-1.0</feature>
...
</featuremanager>
<jaasLoginContextEntry id="com.ibm.security.jgss.krb5.accept" name="com.ibm.security.jgss.krb5.accept" loginModuleRef="useKeytab" />
<jaasLoginModule id="useKeytab" className="com.ibm.security.auth.module.Krb5LoginModule" controlFlag="REQUIRED" libraryRef="jaasSharedLib">
<options
credsType="both"
debug="true"
useDefaultCcache="false"
tryFirstPass="true"
forwardable ="true"
principal="HTTP/myLibertyMachine.example.com"
useKeytab="${server.config.dir}/resources/security/kerberos/krb5.keytab">
</options>
</jaasLoginModule>
<library id="jaasSharedLib" apiTypeVisibility="spec, ibm-api, api">
<fileset dir="${server.config.dir}/lib/global/" includes="*" />
</library>
Wenn das Feature
constrainedDelegation-1.0 aktiviert ist, ist die folgende Konfiguration implizit:
<constrainedDelegation id="defaultConstrainedDelegation" s4U2selfEnabled="false" />
Um
S4U2self verwenden zu können, muss die folgende Konfiguration in der Datei
server.xml
enthalten sein:
<constrainedDelegation s4U2selfEnabled = "true" id="defaultConstrainedDelegation"/>
Anmerkung: Wenn Sie die API
S4U2proxy verwenden, können die ID jaasLoginContextEntry und der Name
com.ibm.security.jgss.krb5.accept nicht geändert werden.
Anmerkung: S4U2proxy ist standardmäßig aktiviert und S4U2self ist standardmäßig inaktiviert. Die Erweiterung
S4U2self kann durch Ändern des Attributs s4U2selfEnabled in der Datei server.xml aktiviert bzw. inaktiviert werden.
Ergebnisse
Ihre Anwendung kann die vom Feature für eingeschränkte Delegierung bereitgestellte API jetzt aufrufen.