Guide de configuration de l'authentification unique Kerberos (SSO)
Marché
Kerberos est un protocole d'authentification cryptographique qui protège l'accès aux applications. Ce protocole est conçu pour assurer une authentification sécurisée sur un réseau non sécurisé. Le principe fondamental de Kerberos est d'authentifier les utilisateurs tout en empêchant la transmission des mots de passe sur Internet.
Intégration LDAP/Active Directory simplifiée pour WordPress Video.
Termes Kerberos :
Kerberos : Kerberos est un protocole d’authentification qui prend en charge le concept d’authentification unique (SSO). Dans le cas du protocole HTTP, la prise en charge de Kerberos est généralement assurée par le mécanisme d’authentification « SPNEGO ».
Domaine Kerberos : Un domaine administratif d’authentification est désigné par le terme « domaine ». Son rôle est de définir les restrictions d’authentification d’un utilisateur, d’un hôte ou d’un service par un serveur d’authentification. Cela ne signifie pas qu’un utilisateur et un service doivent appartenir au même domaine pour que l’authentification ait lieu : si les deux objets sont connectés par une relation de confiance, même s’ils appartiennent à des domaines différents, l’authentification est possible.
Principal : Dans un système Kerberos, un principal Kerberos représente une identité unique à laquelle Kerberos peut émettre des tickets d’accès aux services compatibles Kerberos. Le séparateur « / » est utilisé pour séparer les différents composants du nom du principal. Le caractère « @ » permet d’identifier un domaine en tant que dernier élément du nom. Si aucun domaine n’est spécifié, le principal est considéré comme appartenant au domaine par défaut défini dans le fichier krb5.conf.
Clients/Utilisateurs : Processus qui accède à un service pour le compte d’un utilisateur. Un domaine peut comporter plusieurs clients ou utilisateurs.
Service : Un élément auquel l'utilisateur souhaite accéder.
L'authentification unique (SSO) est une procédure qui permet à un utilisateur de se connecter une seule fois et d'accéder à de nombreux services après s'être authentifié. Après s'être connecté à un service principal, l'utilisateur est automatiquement authentifié pour tous les services auxquels il a accordé une autorisation. L'authentification unique présente de nombreux avantages, notamment celui d'éviter la fastidieuse procédure de validation d'identité répétée à l'aide de mots de passe ou d'autres systèmes d'authentification.
GSSAPI : Les programmes peuvent accéder aux services de sécurité via l’interface de programmation d’applications (API) GSSAPI (Generic Security Service Application Program Interface). GSSAPI est une norme de l’IETF. Elle n’offre aucune sécurité intrinsèque ; ce sont les fournisseurs de services de sécurité qui proposent les implémentations GSSAPI. L’échange de messages opaques (jetons), qui masque les détails d’implémentation à l’application de niveau supérieur, est la caractéristique distinctive des applications GSSAPI.
SPNEGO : Les logiciels client-serveur utilisent le mécanisme de négociation GSSAPI simple et protégé, souvent appelé « spen-go », pour négocier le choix de la technologie de sécurité. Lorsqu’une application cliente doit se connecter à un serveur distant, mais qu’aucune des deux parties ne sait quels protocoles d’authentification l’autre prend en charge, SPNEGO est utilisé. Ce mécanisme utilise un protocole pour identifier les mécanismes GSSAPI communs disponibles, en choisit un, puis associe toutes les actions de sécurité suivantes à ce mécanisme.
Un KDC (Key Distribution Center) est un service réseau qui fournit des tickets et des clés de session temporaires ; il peut également s'agir d'une instance de ce service ou de l'hôte sur lequel il s'exécute. Le KDC traite les demandes de tickets initiaux et d'octroi de tickets. La partie relative aux tickets initiaux est parfois appelée serveur (ou service) d'authentification. La partie relative à l'octroi de tickets est parfois appelée serveur (ou service) d'octroi de tickets.
Protocole d'authentification NTLM :
L'accès d'un client à une ressource sur un domaine Active Directory peut être authentifié à l'aide du protocole d'authentification défi-réponse connu sous le nom de Windows NT LAN Manager (NTLM). Lorsqu'un client demande l'accès à un service lié au domaine, le service envoie un défi au client, lui demandant d'utiliser son jeton d'authentification pour effectuer une opération mathématique, puis de fournir le résultat au service. Le résultat peut être vérifié par le service ou vérifié par le contrôleur de domaine (DC). Le service accorde l'accès au client si le contrôleur de domaine ou le service vérifie que la réponse du client est exacte.
Parce qu'il permet à l'utilisateur de saisir le facteur d'authentification sous-jacent une seule fois, lors de la connexion, NTLM est une sorte d'authentification unique (SSO).

- Le NEGOTIATE_MESSAGE définit un message NTLM Négocier envoyé du client au serveur. Ce message permet au client de spécifier ses options NTLM prises en charge au serveur.
- Le DÉFI_MESSAGE définit un message de défi NTLM qui est envoyé du serveur au client et il est utilisé par le serveur pour défier le client afin de prouver son identité.
- Le AUTHENTICATE_MESSAGE définit un message d'authentification NTLM qui est envoyé du client au serveur après le traitement du CHALLENGE_MESSAGE par le client.
Remarque : L’authentification Windows utilise soit le protocole d’authentification Kerberos, soit le protocole d’authentification NTLM, selon la configuration du client et du serveur.
Protocole d'authentification Kerberos :

- Message A : Clé de session client/TGS chiffrée à l'aide de la clé secrète du client/utilisateur.
- Message B : Ticket-Granting-Ticket crypté grâce à la clé secrète du TGS.
- MessageC : Composé du TGT du message B et de l'ID du service demandé.
- Message D : Authentificateur chiffré à l’aide de la clé de session Client/TGS.
- Message E : Ticket client-serveur chiffré grâce à la clé secrète du service.
- Message F : Clé de session client/serveur chiffrée avec la clé de session client/TGS.
- Message G : Un nouvel authentificateur, qui inclut l'ID client, l'horodatage et est crypté à l'aide de la clé de session client/serveur.
- Message H : L'horodatage trouvé dans l'authentificateur du client chiffré à l'aide de la clé de session client/serveur.
SSO Kerberos sur Ubuntu/Debian :
Pré-requis :
- Un compte de service/compte utilisateur dans Active Directory.
- Le mot de passe du compte doit avoir un mot de passe défini sur Non expiré.
Étape 1 : créer un fichier Keytab sur le contrôleur de domaine AD :
- Sur le contrôleur de domaine AD, ouvrez l'invite de commande en mode administrateur et exécutez la commande suivante pour créer le fichier Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
Remarque : EXAMPLE.COM doit être en majuscules. Si l’utilisateur avec le SPN existe déjà, utilisez-le au lieu d’en créer un nouveau. Le protocole Kerberos est sensible à la casse. Veuillez vérifier la casse avant d’exécuter la commande keytab.
- Voici les composants de la commande.
| Nom d'hôte du serveur : | Il s'agit du nom d'hôte du site hébergé sur le Serveur. |
| EXEMPLE.COM : | Il s'agit du nom de domaine Active Directory. |
| Pseudo | Il s'agit d'un compte de service dans Active Directory. |
| Mot de passe: | Il s'agit du mot de passe du compte de service utilisé ci-dessus. |
| Chemin: | Chemin vers un emplacement local qui stockera le fichier keytab. (C:\Temp\spn.keytab) |
Remarque : La commande ci-dessus crée un fichier keytab. Ce fichier doit être placé sur le serveur client hébergeant votre site WordPress. L’utilisateur exécutant Apache doit disposer d’un accès complet à ce fichier et des permissions nécessaires pour l’ouvrir.
- Ouvrez Utilisateurs et ordinateurs Active Directory et dans le menu supérieur, sélectionnez Voir >> Fonctionnalités avancées.
- Ouvrez le compte de service et accédez à l'onglet de l'éditeur d'attributs, accédez au servicePrincipalName pour vérifier l'entrée SPN.
- Accédez à la Délégation languette.
- Sélectionner Faites confiance à cet utilisateur pour la délégation à n'importe quel service (Kerberos uniquement).

- Cliquez à nouveau Appliquer.
- Copiez le Onglet de touches fichier du contrôleur de domaine AD vers le serveur Web hébergé sur Apache.
- Accordez l'autorisation au fichier de clés Kerberos :
chmod 644 etc/apache2/spn.keytabÉtape 2 : installer les bibliothèques clientes Kerberos sur le serveur Web :
- Utilisez la commande suivante sur votre terminal pour installer les bibliothèques client Kerberos.
sudo apt-get install krb5-user
Étape 3 : Installer les modules pour Apache :
Remarque : Dans les versions les plus récentes d'Ubuntu/Debian, le module mod_auth_kerb a été déprécié et remplacé par le module mod_auth_gssapi.
- Il existe deux modules Apache, mais un seul d'entre eux doit être installé :
1. module mod-auth-gssapi pour apache.
2. Module mod_auth_kerb pour Apache. (obsolète)
1. Installez le module mod-auth-gssapi pour Apache :
- Utilisez la commande suivante pour installer le libapache2-mod-auth-gssapi module pour Apache sur les systèmes basés sur Debian :
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Installez le module mod_auth_kerb pour Apache (obsolète) :
- Utilisez la commande suivante pour installer le module auth_kerb pour Apache sur les systèmes basés sur Debian :
sudo apt-get install libapache2-mod-auth-kerb- Une fois le module auth_kerb installé, il doit être activé via la commande suivante.
a2enmod auth_kerb- Après l'activation, Redémarrez Apache prendre effet.
Étape 4 : Configurez le domaine Active Directory dans le fichier de configuration Kerberos :
- Ouvrez et modifiez le krb5.conf fichier.
Le chemin vers le fichier krb5.conf pour Linux est C:/etc/krb5.conf et pour les autres systèmes basés sur UNIX, c'est c:/etc/krb5/krb5.conf - Ajoutez l'extrait de configuration suivant au krb5.conf déposer sous la section mentionnée :
[libdefaults]
default_realm = EXAMPLE.COM
# ...
# ...
[realms]
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
À noter: Remplacez le CONTRÔLEUR DE DOMAINE AD IP/DNS avec votre IP/DNS adresse. Assurez-vous EXEMPLE.COM doit être en majuscule.
Remplacez le EXEMPLE.COM avec le nom de domaine Active Directory et assurez-vous que le port 88 sur le contrôleur de domaine AD est accessible à partir de ce serveur.
- Enregistrez le fichier.
Étape 5 : Configurer Kerberos SSO pour l’annuaire de sites :
- Modifiez le fichier de configuration de l'hôte virtuel imposé qui est stocké sous Répertoire /etc/apache2/sites-enabled ou le fichier d'hôte virtuel par défaut nommé 000-default.conf
Remarque : Ajoutez la section suivante dans le répertoire en fonction du module Apache utilisé. Par exemple : « mod_auth_kerb » ou « mod_auth_gssapi ».
- 1. Ajoutez la section suivante dans le répertoire du site pour mod_auth_gssapi.
<IfModule !mod_auth_gssapi.c>
LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiAllowedMech krb5
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
BrowserMatch Windows gssapi-no-negotiate
Require valid-user
</Directory>
OR
- 2. Ajoutez la section suivante dans le répertoire du site pour mod_auth_kerb (obsolète).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
À noter: Qu'on Assure EXEMPLE.COM doit être en majuscule.
Voici les composants de la configuration ci-dessus :
| EXEMPLE.COM : | Il s'agit du domaine Active Directory tel que configuré dans krb5.conf. |
| CHEMIN VERS KEYTAB : | Chemin accessible vers le keytab sur ce serveur. (etc/spn.keytab) |
- Après cette configuration, Apache doit être redémarré pour que les modifications prennent effet.
À noter: Une fois que vous avez terminé de configurer les paramètres, cliquez ici pour configurer les navigateurs pour Kerberos SSO.
Pour tester votre configuration Kerberos/NTLM SSO, cliquez ici.
Pour résoudre toute erreur, veuillez cliquez ici.
Configurer Kerberos sur RHEL/CentOS :
Étape 1 : créer un fichier Keytab sur le contrôleur de domaine AD :
- Sur le contrôleur de domaine AD, ouvrez l'invite de commande en mode administrateur et exécutez la commande suivante pour créer le fichier Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
Remarque : EXAMPLE.COM doit être en majuscules. Le protocole Kerberos est sensible à la casse. Veuillez vérifier la casse avant d’exécuter la commande keytab.
- Voici les composants de la commande.
| Nom d'hôte du serveur : | Il s'agit du nom d'hôte du site hébergé sur le Serveur. |
| EXEMPLE.COM : | Il s'agit du nom de domaine Active Directory. |
| Pseudo | Il s'agit d'un compte de service dans Active Directory. |
| Mot de passe: | Il s'agit du mot de passe du compte de service utilisé ci-dessus. |
| Chemin: | Chemin vers un emplacement local qui stockera le fichier keytab. (C:\Temp\spn.keytab) |
Remarque : La commande ci-dessus crée un fichier keytab . Ce fichier doit être placé sur le serveur client hébergeant votre site WordPress. L’utilisateur exécutant Apache doit disposer d’un accès complet à ce fichier et des autorisations nécessaires pour l’ouvrir.
- Copiez le Fichier Keytab du contrôleur de domaine AD au serveur Web hébergé sur Apache.
- Accordez l'autorisation au fichier de clés Kerberos :
chmod 644 etc/httpd/spn.keytabÉtape 2 : installer les bibliothèques clientes Kerberos sur le serveur Web :
- Utilisez la commande suivante sur votre terminal pour installer les bibliothèques client Kerberos.
yum install -y krb5-workstation krb5-devel krb5-libs mod_auth_gssapi mod_session
Remarque : Dans les versions les plus récentes de CentOS, le module mod_auth_kerb a été déprécié et remplacé par le module mod_auth_gssapi.
Étape 3 : Installer les modules pour Apache :
Remarque : Dans les versions les plus récentes d'Ubuntu/Debian, le module mod_auth_kerb a été déprécié et remplacé par le module mod_auth_gssapi.
- Il existe deux modules Apache, mais un seul d'entre eux doit être installé :
1. module mod-auth-gssapi pour apache.
2. Module mod_auth_kerb pour Apache (obsolète).
1. Installez le module mod-auth-gssapi pour Apache :
- Utilisez la commande suivante pour installer le Module libapache2-mod-auth-gssapi pour Apache sur les systèmes basés sur Debian :
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Installez le module mod_auth_kerb pour Apache (obsolète) :
- Utilisez la commande suivante pour installer le module auth_kerb pour Apache sur les systèmes basés sur Red Hat. (Pour les dernières versions de RHEL, utilisez le module mod-auth-gssapi)
yum install mod_auth_kerbÉtape 4 : Configurez le domaine Active Directory dans le fichier de configuration Kerberos :
- Ouvrez et modifiez le krb5.conf fichier.
Le chemin d'accès au fichier krb5.conf pour RHEL est C:/etc/krb5.conf - Ajoutez l'extrait de configuration suivant au krb5.conf déposer sous la section mentionnée :
- Accédez à la [libdefaults] section et ajoutez ce qui suit :
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
- Accédez à la [royaumes] section et ajoutez ce qui suit :
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
- Accédez à la [domaine_domaine] section et ajoutez ce qui suit :
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
À noter: Remplacez le CONTRÔLEUR DE DOMAINE AD IP/DNS avec votre adresse IP/DNS. Assurez-vous d'EXAMPLE.COM doit être en majuscule.
Remplacez le EXEMPLE.COM avec le nom de domaine Active Directory et assurez-vous que le port 88 sur le contrôleur de domaine AD est accessible à partir de ce serveur.
- Enregistrez le fichier.
Étape 5 : Configurez le domaine Active Directory dans le fichier de configuration Kerberos :
- Modifier le fichier de configuration de l'hôte imposé /etc/httpd/conf/httpd.conf
- Ajoutez la section suivante dans le répertoire du site pour mod_auth_gssapi
LoadModule auth_gssapi_module modules/mod_auth_gssapi.so
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
Require valid-user
</Directory>
OR
- Ajoutez la section suivante dans le répertoire du site pour mod_auth_kerb (obsolète).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
- Voici les composants de la configuration ci-dessus :
| CHEMIN VERS KEYTAB | Chemin accessible vers le keytab sur ce serveur. (etc/apache2/spn.keytab) |
| "/espace réservé" | Chemin d'accès à la racine du document |
- Après cette configuration, Apache doit être redémarré pour que les modifications prennent effet.
À noter: Une fois que vous avez terminé de configurer les paramètres, cliquez ici pour configurer les navigateurs pour Kerberos SSO.
Pour tester votre configuration Kerberos/NTLM SSO, cliquez ici.
Pour résoudre toute erreur, veuillez cliquez ici.
SSO avec authentification Windows sur le serveur IIS :
- Ouvrez l'invite de commande dans Mode administrateur.
- Exécutez la commande suivante pour ajouter Nom principal du service (SPN) pour le compte de service.
Remarque : Supposons que le site web doive répondre aux adresses http://machinename et http://machinename.domain.com. Nous devons spécifier ces adresses dans l’attribut SPN du compte de service.
Setspn -S http/<computer-name>.<domain-name> <domain-user-account>Exemple : C:\Users\Administrator> setspn -S HTTP/nom_machine.domaine.com compte_de_service
Remarque : « nom_machine.domaine.com » correspond ici au nom de l’ordinateur. Assurez-vous qu’il est résolvable sur le serveur Windows exécutant le service Active Directory.
- Vérifiez si cela a été correctement défini en exécutant la commande suivante :
setspn -l domain or service_accountExemple : C:\Users\Administrator> setspn -l compte_de_service ou C:\Users\Administrator> setspn -l nom_de_domaine

- Le résultat devrait lister http/nom de la machine.domaine.com
- Ouvrez Utilisateurs et ordinateurs Active Directory et dans le menu supérieur, sélectionnez Voir >> Fonctionnalités avancées.
- Ouvrez le compte de service et accédez au éditeur d'attributs , accédez à l'onglet servicePrincipalName pour vérifier le Entrée SPN.
- Accédez à la Délégation languette.
- Sélectionner Faites confiance à cet utilisateur pour la délégation à n'importe quel service (Kerberos uniquement).

- Cliquez à nouveau Appliquer.
- Ouvrez le Gestionnaire des services Internet et cliquez sur le site Web pour lequel vous souhaitez activer l'authentification Windows.
- Double-cliquez sur Authentification.

- Dans la section Authentification, vous pouvez voir que seule l'authentification anonyme est activée par défaut. IIS essaie toujours d'effectuer une authentification anonyme. Désactiver l'authentification anonyme et Activer l'authentification Windows.

- Faites un clic droit sur l' authentification windows et cliquez sur le Fournisseurs.

- La fenêtre suivante apparaît. Assurez-vous "Négocier" est en tête de liste dans la liste des fournisseurs.

Remarque : Par défaut, deux fournisseurs sont disponibles : Negotiate et NTLM. Negotiate utilise Kerberos comme méthode d’authentification principale et, en cas d’échec, NTLM prend le relais. Il est donc impératif que Negotiate figure en premier dans la liste des fournisseurs.
- Cliquez sur Ok pour fermer la fenêtre.
- Pour configurer le pool d'applications IIS afin de le lancer à partir du compte SPN créé, cliquez sur le Pools d'applications pour ouvrir la fenêtre Pools d'applications.
- Faites un clic droit sur le domaine et dans la liste, cliquez sur le Paramètres avancés.

- Dans la fenêtre Paramètres avancés sous Modèle de processus, cliquez sur le bouton Identite.

- Dans l’identité du pool d’applications, sélectionnez Compte personnalisé et cliquez sur le set bouton pour définir l'identité.
- Changer de ApplicationPoolIdentityApplicationPoolIdentity à \.
Exemple : domaine.com\compte_de_service

- Rendez-vous dans la section Éditeur de configuration.

- Dans le menu déroulant, sélectionnez system.webServer > sécurité > authentification > windowsAuthentication.

- Changer useAppPoolCredentials sur True. et useKernelMode sur False.
Remarque : Définir useAppPoolCredentials sur True signifie que nous autorisons IIS à utiliser le compte de domaine pour déchiffrer le ticket Kerberos des clients.
- Cliquez à nouveau Appliquer.
- Redémarrez le serveur IIS.
- Vous pouvez vérifier que l'authentification Kerberos est utilisée sur le site Web en surveillant le trafic HTTP à l'aide de Fiddler.
Lancez le violoniste et lancez le navigateur sur le site Web souhaité. Localisez la ligne d'accès au site Web dans le côté gauche de la fenêtre. Sélectionnez l'onglet Inspecter sur le côté droit de la fenêtre. Il est évident que Kerberos a été utilisé pour s'authentifier sur le site Web IIS à partir de la ligne « L'en-tête d'autorisation (négocier) semble contenir un ticket Kerberos ».

À noter: Une fois que vous avez terminé de configurer les paramètres, cliquez ici pour configurer les navigateurs pour Kerberos SSO.
Pour tester votre configuration Kerberos/NTLM SSO, cliquez ici.
Pour résoudre toute erreur, veuillez cliquez ici.
SSO avec Apache sur Windows Xampp Server :
- Ouvrez l'invite de commande dans Mode administrateur.
- Exécutez la commande suivante pour ajouter Nom principal du service (SPN) pour le compte de service.
Setspn -s http/<computer-name>.<domain-name> <domain-user-account>Exemple : C:\Users\Administrator> setspn -S HTTP/ nom_machine.domaine.com compte_service
Remarque : « nom_machine.domaine.com » correspond ici au nom de l’ordinateur. Assurez-vous qu’il est résolvable sur le serveur Windows exécutant le service Active Directory.
- Vérifiez si cela a été correctement défini en exécutant la commande suivante :
setspn -l domain\service_account- Le résultat devrait lister http/nom de la machine.domaine.com
- Ouvrez Utilisateurs et ordinateurs Active Directory et dans le menu supérieur, sélectionnez Voir >> Fonctionnalités avancées.
- Ouvrez le compte de service et accédez au éditeur d'attributs , accédez à l'onglet servicePrincipalName pour vérifier le Entrée SPN.
- Accédez à la Délégation languette.
- Sélectionner Faites confiance à cet utilisateur pour la délégation à n'importe quel service (Kerberos uniquement).

- Cliquez à nouveau Appliquer.
- Cliquez ici pour télécharger le module Apache.
- Copiez le mod_authnz_sspi.so à partir de Apache24 > modules dossier et placez-le dans le répertoire modules (C:\xampp\apache\modules).
- Copiez le sspipkgs.exe fichier de Apache24 -> corbeille et placez-le dans le dossier bin de votre dossier Xampp apache (.....\xampp\apache\bin) sur votre serveur Web.
- Ouvrez httpd.conf (.....\xampp\apache\conf) et placez la ligne de code ci-dessous dans la section LoadModule.
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so- Assurez-vous que les modules suivants ne sont pas commentés :
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so- Aussi, assurez-vous de activer l'extension ldap.
- Ouvrez le fichier httpd.conf depuis (.....\xampp\apache\conf\httpd.conf).
Accédez à et collez les lignes ci-dessous après #Require all Grants.
<Directory "...../xampp/htdocs">
......
......
#Require all granted
AllowOverride None Options None
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
Require valid-user
</Directory>
- Redémarrez votre Serveur Apache.
À noter: Une fois que vous avez terminé de configurer les paramètres, cliquez ici pour configurer les navigateurs pour Kerberos SSO.
Pour tester votre configuration Kerberos/NTLM SSO, cliquez ici.
Pour résoudre toute erreur, veuillez cliquez ici.
Configurer les navigateurs pour Kerberos SSO :
Remarque : La configuration côté client permet au navigateur d’utiliser SPNEGO pour négocier l’authentification Kerberos. Assurez-vous que le navigateur du système de l’utilisateur final est configuré pour prendre en charge l’authentification Kerberos.
Configuration générale de Kerberos SSO pour tous les navigateurs :
- Allez dans le Panneau de configuration et cliquez sur Réseau et Internet >> Options Internet.
- Cela ouvrira une fenêtre Propriétés Internet. Cliquer sur Sécurité >> Intranet local >> Sites.

- Après cela, cliquez sur le bouton Bouton Avancé.

- Dans l' Ajouter ce site Web à la zone section, ajoutez l’URL du site Web auquel vous souhaitez vous connecter avec SSO.

- Cliquez à nouveau Outils > Options Internet > Sécurité > Intranet local > Niveau personnalisé.
- Faites défiler jusqu'aux options d'authentification utilisateur et sélectionnez Connexion automatique uniquement dans la zone Intranet.

- Cliquez sur Ok puis redémarrez votre navigateur.
Une fois les paramètres ci-dessus définis, vous n'avez pas besoin de configurer les paramètres du navigateur pour Internet Explorer, Google Chrome et Apple Safari.
- Internet Explorer
- Google Chrome
- Mozilla Firefox
- Apple Safari
Testez votre configuration SSO Kerberos/NTLM :
Synchronisation de l'heure :
Le protocole Kerberos nécessite que l'heure du client et celle du serveur correspondent : si l'horloge système du client ne correspond pas à celle du serveur, l'authentification échouera. Le moyen le plus simple de synchroniser les horloges système consiste à utiliser un serveur NTP (Network Time Protocol).
Vérifier avec les commandes :
Pour vérifier votre configuration keytab et kerberos, vous pouvez exécuter les commandes suivantes :
- Liste des clés : La commande klist affiche le contenu d'un cache d'informations d'identification Kerberos ou d'une table de clés. Avec cette commande, vous pouvez vérifier si vous avez obtenu un ticket valide ou non.
- klist -t -k etc/apache2/spn.keytab : Pour répertorier toutes les entrées de la table de clés etc/apache2/spn.keytab avec des horodatages.
- klist -ek /etc/apache2/spn.keytab : Affiche le type de cryptage de la clé de session et du ticket et répertorie les entrées dans une table de clés.
- kinit -V -kt /etc/apache2/spn.keytab -p HTTPS/ webserver.votredomaine.com @VOTREDOMAINE.COM : Vérifiez l'authentification Kerberos avec le fichier keytab.
- kdestroy -A: Vous pouvez utiliser la commande this sous Linux pour réinitialiser n'importe quel jeton Kerberos sur votre ordinateur local. La commande détruit votre précédent ticket Kerberos.
- purge de la liste k : Vous pouvez utiliser cette commande sous Windows pour réinitialiser n'importe quel jeton Kerberos sur votre ordinateur local. La commande détruit votre précédent ticket Kerberos.
- KRB5_TRACE=/dev/stdout kinit -kt /etc/krb5.keytab HTTP/≶Nom d'hôte du serveur>: Vous pouvez utiliser cette commande sur votre serveur Web Linux pour obtenir un ticket Kerberos à l'aide du fichier keytab et obtenir des informations détaillées sur le débogage du processus d'authentification Kerberos en activant le traçage Kerberos.
Configuration des tests :
- Pour tester la configuration SSO, créez un test.php fichier dans votre répertoire racine WordPress.
- Entrez la ligne ci-dessous :
<?php
var_dump($_SERVER);
?>
- Enregistrez le fichier et accédez-y dans le navigateur Web. Vous verrez le Contenu de $_SERVER.
- Rechercher "REMOTE_USER" et il doit contenir le nom d'utilisateur actuellement connecté.
Remarque : Veuillez supprimer le fichier test.php après avoir vérifié votre configuration, car il contient des informations importantes.
Authentification Kerberos sur plusieurs domaines :
- Créez des Keytabs distincts sur chaque domaine et fusionnez-les avec l'outil ktutil :
ktutil
ktutil: read_kt <keytab_filename_1>
ktutil: read_kt <keytab_filename_2>
ktutil: read_kt <keytab_filename_3>
ktutil: write_kt spn.keytab
ktutil: quit
- Vérifiez la fusion avec la commande ci-dessous :
klist -k spn.keytab
- Configurez krb5.conf :
Le fichier krb5.conf contient des informations de configuration Kerberos qui incluent les serveurs KDC et d'administration pour un ou plusieurs domaines Kerberos, les valeurs par défaut pour le domaine actuel et les mappages des noms d'hôtes sur les domaines Kerberos. Dans le cas de plusieurs domaines, le fichier krb5.conf doit être mis à jour avec des informations sur les différents domaines/domaines de domaine pour que l'authentification fonctionne.
Dépannage:
Voici les messages d’erreur les plus courants :
-
kinit: Pre-authentication failed: Invalid argument while getting initial credentialsLe type de chiffrement rc4 qui est encore très utilisé dans les environnements AD mais déjà désactivé par défaut dans RHEL-8.3. Vous pouvez vous référer à l'exemple ci-dessous pour ajouter un type de cryptage à votre fichier keytab.
or
GSS ERROR gss_accept_sec_context(): [Unspecified GSS failure. Minor code may provide more information (Request ticket server HTTP/<Server Host Name>@EXAMPLE.COM kvno x enctype rc4-hmac found in keytab but cannot decrypt ticket)]
Exemple :ktutil
addent -password -p HTTP/<Server Host Name>@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96
wkt spn.keytab.
Assurez-vous que le chiffrement Kerberos AES 256 bits est pris en charge dans les paramètres « Compte » de l'utilisateur.

-
Unspecified GSS failure. Minor code may provide more information (Clock skew too great)Kerberos est très sensible au temps. Vérifiez que les horloges des hôtes d'Active Directory et du serveur Web sont identiques. Configurez l'un de vos contrôleurs de domaine pour qu'il serve de serveur NTP pour vos ordinateurs clients.
or
kinit: krb5_get_init_creds: Too large time skew -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied)Mauvaises autorisations du système de fichiers pour /etc/apache2/spn.keytab, c'est-à-dire non lisibles pour l'utilisateur Linux du serveur Web.
Pour modifier les autorisations du système de fichiers, utilisez chmod 644 /etc/apache2/spn.keytab -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found).Principal de service manquant (éventuellement HTTP/webserver.yourdomain.com @YOURDOMAIN.COM) dans /etc/apache2/spn.keytab. -
Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)Le site Web n'est pas dans la zone « Intranet local » dans IE ou IE est mal configuré, voir L'authentification utilise NTLM au lieu de Kerberos. -
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).Mauvais mot de passe kvno ou machine dans etc/apache2/spn.keytab. Recréez le keytab en utilisant les informations correctes.
Problème avec le cache de tickets Kerberos local sur votre poste de travail, utilisez Kerbtray.exe pour purger le cache de tickets et ouvrez à nouveau le site Web dans IE. -
kinit: KDC has no support for encryption type while getting initial credentialsModifiez le type de chiffrement par défaut dans la section libdefaults du fichier /etc/apache2/krb5.conf. Ajoutez les default_tgs_enctypes et default_tkt_enctypes à votre configuration. -
[libdefaults]
default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5kinit: krb5_get_init_creds: Error from KDC: CLIENT EXPIREDVotre compte Kerberos n'est plus actif. Les informations d'identification du compte doivent être renouvelées.
or
kinit: Client's entry in database has expired while getting initial credentials -
kinit: krb5_cc_get_principal: No credentials cache file foundLe mauvais domaine a été ciblé lors de l'exécution de la commande kinit. Vérifiez le nom de domaine, il doit être en majuscule EXAMPLE.COM
or
kinit: krb5_get_init_creds: Error from KDC: CLIENT_NOT_FOUND -
kinit : Cannot find KDC for requested realm while getting initial credentialsLe fichier /etc/apache2/krb5.conf ne contient pas le nom de domaine Active Directory (.EXAMPLE.COM). -
kinit: Preauthentication failed while getting initial credentialsCausé par une erreur de saisie du mot de passe Kerberos. Veuillez réessayer. Ou en raison de l'horloge de votre système. Assurez-vous que la commande date renvoie une heure correcte à 5 minutes près. -
kinit: Client not found in Kerberos database while getting initial credentialsVotre principal Kerberos peut différer de votre nom d'utilisateur sur votre système local. -
kinit: Client's entry in database has expiredVous devez changer votre mot de passe Kerberos.
FAQ
Plus de FAQ ➔Puis-je utiliser un utilisateur LDAP existant en tant que principal du service Kerberos ?
Oui, vous pouvez utiliser un utilisateur LDAP existant comme principal du service Kerberos. Cependant, cet utilisateur doit disposer d'un mot de passe défini pour ne jamais expirer. Veuillez vous assurer que ce compte n'est utilisé par aucun utilisateur, car l'application utilise ce compte comme principal du service Kerberos et le keytab correspondant pour obtenir un ticket Kerberos.
Qu'est-ce qu'un « client Kerberos », un « serveur Kerberos » et un « serveur d'applications » ?
Toute authentification dans Kerberos se produit entre les clients et les serveurs. Par conséquent, toute entité qui reçoit un ticket de service pour un service Kerberos est appelée « client Kerberos » dans la terminologie Kerberos. Les utilisateurs sont souvent considérés comme des clients, mais n’importe quel mandant peut en être un.
Le Key Distribution Center, ou KDC en abrégé, est généralement appelé « serveur Kerberos ». Le service d'authentification (AS) et le service d'octroi de billets (TGS) sont tous deux mis en œuvre par le KDC. Chaque mot de passe connecté à chaque principal est stocké dans le KDC. Pour cette raison, il est essentiel que le KDC soit aussi sûr que possible.
L'expression « serveur d'applications » fait souvent référence aux logiciels Kerberos que les clients utilisent pour interagir tout en s'authentifiant à l'aide de tickets Kerberos. Un exemple de serveur d'applications est le démon telnet Kerberos.
Pourquoi suis-je invité à saisir mes informations d'identification ?
Cela se produit lorsque le protocole NTLM est utilisé pour l'authentification au lieu de Kerberos.
Cela peut se produire pour plusieurs raisons :
- Vérifiez si vous utilisez une machine jointe à un domaine pour accéder au site Web.
- Assurez-vous que l'heure est synchronisée entre le serveur LDAP et le serveur Web.
- Vérifiez si les paramètres de votre navigateur et les options Internet sont configurés pour Kerberos SSO.
- Si vous rencontrez toujours ce problème, n'hésitez pas à nous contacter.
Articles Relatifs
Merci pour votre réponse. Nous reviendrons vers vous bientôt.
Quelque chose s'est mal passé. Veuillez soumettre à nouveau votre requête


