Configurer l’authentification connecteur AD/LDAP avec Kerberos

Vous pouvez fédérer avec Active Directory au moyen du connecteur AD/LDAP. Le connecteur AD/LDAP simplifie l’authentification de vos utilisateurs lorsqu’ils sont sur une machine reliée à un domaine, au sein du réseau de l’entreprise.

Configurez Active Directory

  1. Allez à Auth0 Dashboard > Authentification > Entreprise > Active Directory/LDAP et sélectionnez le type de connexion à afficher.

  2. Activez l’option Utiliser l’authentification intégrée Windows (Kerberos).

Plage détectée automatiquement pour Kerberos

Lorsque l’authentification Kerberos est activée, l’adresse IP du serveur exécutant le connecteur AD est automatiquement incluse dans la plage d’adresses IP du réseau. Cela implique que si les requêtes d’un utilisateur proviennent de la même adresse IP que celle du connecteur AD, alors une tentative d’authentification Kerberos sera effectuée.

  1. Configurer Plages IP. Utiliser notations CIDR. Il doit s’agir de plages visibles par Auth0. Lorsque Auth0 est exécuté dans le nuage, il ne peut pas détecter l’adresse IP interne de vos utilisateurs. Dans ce cas, vous devrez configurer les adresses IP publiques ou WAN de votre entreprise.

  2. Nous vous recommandons de redémarrer le service Windows hébergeant le connecteur AD chaque fois que ce paramètre est modifié. De cette façon, les modifications prendront effet immédiatement.

Flux d’authentification

Selon l’emplacement des utilisateurs, le flux d’authentification sera différent lorsque les plages d’adresses IP sont définies. En prenant Fabrikam comme exemple, puisqu’il utilise la version SaaS d’Auth0, ils ont configuré, dans la connexion, leur adresse IP publique (24.12.34.56/32). Les utilisateurs se connectant depuis l’intérieur du bâtiment proviendront tous de l’adresse IP 24.12.34.56 (tel que configuré sur la connexion). Lors de leur authentification, les utilisateurs peuvent suivre le flux natif AD/LDAP et profiter d’une expérience SSO fluide.

Pour que cela fonctionne, le réseau doit autoriser les utilisateurs à se connecter au connecteur AD/LDAP à partir du port configuré dans le fichier config.json. Dans des déploiements haute disponibilité du connecteur, l’adresse à laquelle les utilisateurs se connecteront est celle de l’équilibreur de charge réseau, situé devant toutes les instances du connecteur.

Configure AD/LDAP Connector Authentication with Kerberos Flow Diagram

Pour en savoir plus, veuillez consulter Déployement des connecteurs AD/LDAP pour les environnements haute disponibilité.

En revanche, lorsque les utilisateurs ne se trouvent pas sur le réseau de l’entreprise (p. ex., sur un site client ou travaillant à domicile sans VPN), ils ne pourront pas accéder directement au connecteur AD/LDAP. Dans ce cas, ils devront saisir leur nom d’utilisateur et leur mot de passe, et Auth0 validera ces informations d’identification avec le connecteur AD/LDAP, qui se chargera à son tour de les authentifier au moyen d’Active Directory.

Configure AD/LDAP Connector Authentication with Kerberos Credentials Flow Diagram

Connexion automatique avec Lock

Lorsque qu’une application utilise Lock 10 ou 11 sur la page de connexion hébergée par Auth0 (généralement pour les protocoles SAML/WS-Federation et les intégrations à authentification unique), un bouton permet aux utilisateurs de s’authentifier au moyen de « l’authentification Windows ».

Dans certaines situations, il peut être nécessaire de connecter automatiquement l’utilisateur si Kerberos est possible (en fonction de l’adresse IP de l’utilisateur final). Les modifications suivantes peuvent être apportées à la page de connexion Auth0 afin de permettre cette connexion automatique lorsque Kerberos est possible :

<script src="https://cdn.auth0.com/js/lock/11.x.x/lock.min.js"></script>
<script src="https://cdn.auth0.com/js/auth0/9.x/auth0.min.js"></script>
<script src="https://cdn.auth0.com/js/polyfills/1.0/object-assign.min.js"></script>

<script>
  var config = JSON.parse(decodeURIComponent(escape(window.atob('@@config@@'))));

  var lock = new Auth0Lock(config.clientID, config.auth0Domain, {
      //...additional configuration
  });

  function handleError(err) {
    // add proper error handling
    console.log(err);
  };

  var params = Object.assign({
      scope: config.internalOptions.scope,
      _csrf: config.internalOptions._csrf,
      state: config.internalOptions.state,
    },
    {
      /* additional configuration needed for use of custom domains 
      overrides: {
        __tenant: config.auth0Tenant,
        __token_issuer: '{yourCustomDomain}'
      }, */
      domain: config.auth0Domain,
      clientID: config.clientID,
      redirectUri: config.callbackURL,
      responseType: 'code'
    });

  var webAuth = new auth0.WebAuth(params);

  /*
   * Verify if Kerberos is possible, if it is, try to authenticate the user.
   *
   * the response from getSSOData will only have a connection and strategy if 
   * the IP address is within the Kerberos range in the connection's settings
   */
  webAuth.client.getSSOData(true, function(err, data) {
    if (err) handleError(err);

    if (data.connection && data.strategy === 'ad') {
      webAuth.authorize({connection: data.connection}, function(err) {
        if (err) handleError(err);
      });
    } else {
      lock.show();
    }
  });
</script>

Was this helpful?

/

Contourner Kerberos lors de l’exécution

Vous pouvez désactiver l’utilisation de Kerberos, même si l’utilisateur se connecte depuis une adresse IP incluse dans la plage configurée dans les paramètres de connexion, en passant l’option rememberLastLogin: false to lock.show().

function useKerberos() {
      // return true to use Kerberos, false to bypass
    };
    
    lock.show({rememberLastLogin: useKerberos()});

Was this helpful?

/

Activer la journalisation des requêtes Kerberos

  1. Pour activer la journalisation détaillée des requêtes Kerberos, ajoutez une variable d’environnement au niveau du système DEBUG=kerberos-server.

  2. Redémarrez le connecteur.

  3. Connectez-vous à nouveau et vérifiez les journaux pour plus d’informations.

Prise en charge de Kerberos par Firefox

Par défaut, Firefox refuse toutes les demandes de « négociation » nécessaires à l’authentification des utilisateurs via Kerberos. Si vous souhaitez utiliser Firefox avec Kerberos, il est impératif d’autoriser le serveur sur lequel le connecteur est installé.

  1. Ouvrez un onglet Firefox et tapez about:config dans la barre d’adresse.

  2. Ignorez tout message d’avertissement et, dans la zone de recherche, saisissez negotiate.

  3. Localisez l’élément network.negotiate-auth.trusted-uris et double-cliquez pour modifier sa valeur.

  4. Tapez le nom de domaine du serveur sur lequel le connecteur est installé. Si vous avez plusieurs instances du connecteur derrière un équilibreur de charge, ajoutez le nom DNS de l’équilibreur. La valeur accepte une liste de préfixe URL séparés par des virgules ou de domaines sous la forme de mydomain.com, https://myotherdomain.com.

  5. Cliquez sur Ok. Vous n’avez pas besoin de redémarrer le serveur pour que les modifications prennent effet.

Soutien HTTPS pour Kerberos

L’authentification Kerberos fonctionne sur HTTP (non HTTPS). Microsoft Office 365 et d’autres produits modernes peuvent ne pas fonctionner avec HTTP.

Pour résoudre cette contrainte :

  1. Configurez un proxy inverse et exposez le connecteur AD/LDAP sur un domaine HTTPS. Vous pouvez utiliser le paramètre SERVER_URL (URL frontale) pour publier l’emplacement public où le connecteur AD/LDAP écoutera les demandes entrantes.

  2. Cartographier la SERVER_URL dans le proxy inverse vers toutes les instances internes des connecteurs déployés.