Authentification LDAP

Le protocole LDAP (Lightweight Directory Access Protocol) est un protocole Internet permettant d'accéder à des services d'informations de répertoire distribué et d'assurer leur maintenance. Si vous utilisez LDAP pour authentifier les utilisateurs des applications Web, prenez une minute pour prendre connaissance du contenu de cette rubrique avant de commencer.

Recommandations de programmation

En cas d'authentification via LDAP, observez les recommandations suivantes :
  • Utilisez uniquement une interface LDAP -- Les utilisateurs peuvent uniquement être authentifiés via une connexion à un serveur LDAP.
  • Active Directory -- L'utilisation d'une interface Active Directory est interdite mais l'authentification LDAP via Active Directory est prise en charge.
  • Propriétés de l'administrateur -- L'administrateur LDAP doit avoir accès à toutes les propriétés LDAP des utilisateurs.
Les attributs LDAP lus par IBM® API Connect sont les suivants:
Attribut Définition
mail Adresse e-mail SMTP de l'utilisateur.
cn Utilisé en interne pour déterminer le nom usuel de l'utilisateur.
sn Utilisé en interne pour déterminer le nom de famille de l'utilisateur.
givenname Utilisé en interne pour déterminer le prénom de l'utilisateur.
Préfixe de Search dn Utilisé comme nom d'utilisateur.

Utilisation d'un serveur LDAP pour l'authentification des utilisateurs

Chaque entrée du serveur d'annuaire LDAP possède un nom distinctif (DN). Le nom distinctif est le nom qui identifie une entrée de façon unique dans l'annuaire. Un nom distinctif est constitué de paires attribute=value , séparées par des virgules. Par exemple :
cn=Ben Gray,ou=editing,o=New York Times,c=US
cn=Lucille White,ou=editing,o=New York Times,c=US
cn=Tom Brown,ou=reporting,o=New York Times,c=US

Il est possible d'utiliser n'importe lequel des attributs définis dans le schéma d'annuaire pour constituer un nom distinctif. L'ordre des paires de valeurs de l'attribut de composant est important. Le nom distinctif contient un composant pour chaque niveau de la hiérarchie des annuaires, en partant de la racine jusqu'au niveau où se trouve l'entrée. Les noms distinctifs LDAP commencent par l'attribut le plus spécifique (généralement une sorte de nom) puis se poursuivent par des attributs de plus en plus élargis, pour se terminer par un attribut de pays. Le premier composant du nom distinctif désigne le nom distinctif relatif (RDN). Il identifie une entrée distincte de toutes les autres entrées qui ont le même parent. Dans les exemples précédents, le RDN "cn=Ben Gray" sépare la première entrée de la seconde, (avec RDN "cn=Lucille White"). Ces deux exemples de noms distinctifs sont par ailleurs équivalents. La paire attribut=valeur composant le nom distinctif relatif d'une entrée doit également être présent dans l'entrée. (Cela n'est pas vrai pour les autres composants du nom distinctif.)

Exemples

Dans les exemples suivants, une recherche d'utilisateur est effectuée à partir du nom distinctif de base. La recherche est effectuée anonymement ou, si un lien d'authentification est utilisé, un utilisateur authentifié est utilisé. La recherche de nom distinctif ajoute le préfixe, le prénom de l'utilisateur (givenname) et le suffixe. Si le préfixe utilisé est (uid= et que le suffixe utilisé est ")", uid devient l'attribut de nom d'utilisateur. Le filtre de recherche par défaut utilisé est: (|(cn={filter}*)(sn={filter}*)(mail={filter}*)(givenName={filter})) et les attributs utilisés pour le préfixe sont également ajoutés au filtre de recherche. Dans ce cas où '(uid=' est le préfixe, lors de la recherche d'utilisateurs, le filtre de recherche devient :
  (|(cn={filter}*)(sn={filter}*)(mail={filter}*)(givenName={filter}*)(uid={filter}*))
{filter} est remplacé par le texte réel.

Le non distinctif de la liaison authentifiée est un utilisateur situé sur le serveur LDAP externe autorisé à extraire les noms distinctifs de base et à effectuer des recherches dans l'annuaire LDAP dans la base de recherche définie. Il doit également pouvoir lire les propriétés des autres utilisateurs et être utilisé si l'accès anonyme à LDAP pour extraire les noms distinctifs et pour rechercher les attributs des utilisateurs et y accéder n'est pas autorisé. Lorsque la recherche porte sur le terme Steve, le filtre de la requête LDAP affiché dans l'exemple ci-après est utilisé et la recherche est effectuée à partir des noms distinctifs de base spécifiés dans l'interface utilisateur. Lorsque le nom distinctif de l'utilisateur est renvoyé, ce dernier ainsi que le mot de passe sont utilisés pour authentifier l'utilisateur :

(|(cn=Steve*)(sn=Steve*)(mail=Steve*)(givenName=Steve*)(uid=Steve*)).
Pour les liaisons durant les appels de connexion, la chaîne de recherche utilisée est le préfixe. Par exemple, si le préfixe est '(uid=', la chaîne de recherche utilisée pour rechercher un utilisateur durant la connexion devient : (uid=Steve).
Utilisation de l'attribut mail comme nom d'utilisateur
Lorsque vous souhaitez utiliser une adresse électronique comme nom d'utilisateur (par exemple, steve@company.com), vous utilisez généralement l'attribut de messagerie comme préfixe'(mail='. Dans ce cas, utilisez la chaîne de recherche suivante pour effectuer la recherche en interne (en supposant que'(mail='comme préfixe):
(|(cn=steve@company.com*)(sn=steve@company.com*)(mail=steve@company.com*)
(givenName=steve@company.com*)(mail=steve@company.com*))  
Dans l'exemple précédent, si le nom distinctif est trouvé, le mot de passe est utilisé avec ce nom pour effectuer la liaison. C'est le premier résultat qui est pris en compte ; veillez donc à utiliser un attribut unique pour le nom d'utilisateur (username). Ensuite, les propriétés LDAP de l'utilisateur sont lues (cn, sn, mail, givenName). Si les propriétés LDAP ne peuvent pas être lues à l'aide de l'utilisateur connecté, elles sont lues à partir du nom distinctif de l'utilisateur à l'aide des données d'identification de liaison authentifiées. Si l'attribut de nom d'utilisateur est différent, il est également demandé. Par exemple, si le préfixe est '(uid=', l'attribut uid est également lu à partir de l'objet nom distinctif de l'utilisateur :
(|(cn={filter}*)(sn={filter}*)(mail={filter}*)(givenName={filter}*))
Remarque: Le préfixe et le suffixe ne peuvent pas être utilisés pour obtenir directement le nom distinctif d'un utilisateur. Par exemple, la tentative suivante d'obtention directe du nom distinctif d'un utilisateur échouera :
Prefix: "uid=", Suffix: ",ou=users,dc=company,dc=com"

Références LDAP

Les références LDAP permettent à une arborescence de répertoires d'être partitionnée et distribuée entre plusieurs serveurs LDAP. Une référence LDAP permet à un contrôleur de domaine d'indiquer à une application client qu'il ne possède pas de copie de l'objet demandé tout en indiquant au client un emplacement plus susceptible de contenir l'objet. Le client utilise ensuite l'objet comme base d'une recherche DNS d'un contrôleur de domaine.

La prise en charge de la référence LDAP par API Connect inclut:
  • La recherche d'utilisateurs faisant partie de plusieurs arborescences et forêts Active Directory.
  • Authentification des utilisateurs dans le gestionnaire de cloud, le gestionnaire d'API et le portail CMS.
Remarque: API Connect La prise en charge des références LDAP dépend des conditions suivantes:
  • Un hôte/port LDAP unique est configuré avec des données d'identification d'administrateur et les références à tous les utilisateurs sont effectuées à partir du nom distinctif de base du serveur/de l'arborescence.
  • Dans le cadre de la recherche d'utilisateur suivant la référence LDAP, ce sont les mêmes données d'identification d'administrateur qui sont utilisées dans les arborescences et les forêts en aval.
  • L'authentification API de LDAP ne prend pas en charge les références LDAP externes. Les références LDAP internes sont prises en charge.