Vous pouvez configurer un serveur Liberty pour la prise en charge de la délégation contrainte Kerberos pour les jetons SPNEGO sortants.
Avant de commencer
Vérifiez que l'authentification Web SPNEGO a été configurée.
Seules les versions IBM® JDK 1.8 et ultérieures sont prises en charge.
Pourquoi et quand exécuter cette tâche
L'extension Kerberos v5 appelée S4U (Services for Users, services aux utilisateurs), également appelée délégation
contrainte, se compose de deux parties :
- S4U2self
Permet à un serveur Liberty d'obtenir un ticket de
service pour lui-même sur le compte d'un utilisateur. Ce ticket peut être
utilisé avec toute forme d'authentification prise en charge par Liberty.
S4U2self est l'extension
de transition de protocole Kerberos.
- S4U2proxy
Autorise un serveur Liberty à obtenir des tickets de service pour des service d'accréditation pour le compte d'un utilisateur. Ces tickets de service sont obtenus en utilisant le ticket de service de l'utilisateur pour le service Liberty.
Les services sont contraints par l'administrateur du centre de distribution de clés Kerberos.
S4U2proxy est l'extension Kerberos Constrained
Delegation.
La fonction de délégation contrainte fournit les API suivantes pour la création du jeton SPNEGO sortant
pour les services de back end qui prennent en charge l'authentification SPNEGO, par exemple les serveurs .NET
et d'autres serveurs
Liberty.
- API S4U2self :
com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorizationUsingS4U2self()
- API S4U2proxy :
com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorization()
La procédure suivante utilise le même exemple de configuration système que celle utilisé dans la rubrique
Configuration de l'authentification SPNEGO
dans Liberty et illustrée dans Connexion unique pour les demandes HTTP à l'aide de l'authentification Web SPNEGO.
Procédure
- Sur le contrôleur de domaine Microsoft myAdMachine.example.com,
mettez à jour le nom principal de service (SPN) que vous utilisez pour valider le jeton SPNEGO entrant. Par exemple, mettez à jour le SPN HTTP/myLibertyMachine.example.com comme suit :
- Pour utiliser S4U2self, procédez comme suit :
- Ouvrez le compte utilisateur mappé au SPN délégué.
- Ouvrez l'onglet de l'éditeur d'attributs.
- Modifiez la propriété userAccountControl comme suit :
- La délégation d'authentification digne de confiance 0x1000000, or the TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION
enum) doit être true.
- Définissez le service sécurisé :
- Ouvrez l'onglet Délégation dans le compte utilisateur.
- Sélectionnez le bouton radio Faire confiance à l'utilisation pour la délégation
sur les services spécifiés uniquement (Trust this user for delegation to specified services only).
- Sélectionnez le bouton radio Utiliser tout protocole d'authentification.
- Cliquez sur Ajouter pour ajouter le service sécurisé.
- Cliquez sur Utilisateurs ou ordinateurs.
- Entrez le SPN à utiliser pour le service sécurisé.
- Cliquez sur Vérifier les noms et vérifiez que le nom d'objet approprié a été trouvé.
- Cliquez sur OK.
- Sélectionnez le SPN spécifié et cliquez sur OK.
- Pour utiliser S4U2proxy, procédez comme suit :
- Ouvrez le compte utilisateur mappé au SPN délégué.
- Ouvrez l'onglet de l'éditeur d'attributs.
- Modifiez la propriété userAccountControl comme suit :
- La délégation d'authentification digne de confiance (0x1000000, or the TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION
enum) doit être true.
- Définissez le service sécurisé :
- Ouvrez l'onglet Délégation dans le compte utilisateur.
- Sélectionnez le bouton radio Faire confiance à l'utilisation pour la délégation
sur les services spécifiés uniquement (Trust this user for delegation to specified services only).
- Cliquez sur Ajouter pour ajouter le service sécurisé.
- Cliquez sur Utilisateurs ou ordinateurs.
- Entrez le SPN à utiliser pour le service sécurisé.
- Cliquez sur Vérifier les noms et vérifiez que le nom d'objet approprié a été trouvé.
- Cliquez sur OK.
- Sélectionnez le SPN spécifié et cliquez sur OK.
- Sur la machine du serveur Liberty
(myLibertyMachine.example.com), activez la fonction
de délégation contraite en ajoutant constrianedDelegation-1.0 à featureManager et configurez le module de connexion JAAS Kerberos dans le fichier server.xml.
<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>
quand la fonction
constrainedDelegation-1.0 est activée, la configuration suivante
est implicite :
<constrainedDelegation id="defaultConstrainedDelegation" s4U2selfEnabled="false" />
Pour pouvoir utiliser
S4U2self, vous devez définir la configuration suivante dans le fichier
server.xml :
<constrainedDelegation s4U2selfEnabled = "true" id="defaultConstrainedDelegation"/>
Remarque : Lorsque vous utilisez l'API S4U2proxy, l'ID jaasLoginContextEntry et le nom com.ibm.security.jgss.krb5.accept ne peuvent pas être modifiés.
Remarque : Par défaut,
S4U2proxy est activé et S4U2self est désactivé. L'extension
S4U2self peut être activée ou désactivée en modifiant l'attribut s4U2selfEnabled
dans le fichier server.xml.
Résultats
Votre application est à présent prête à appeler l'API fournie par la fonction de délégation contrainte.