web-dev-qa-db-fra.com

Quel champ à utiliser lors de l'authentification contre Active Directory?

Les objets utilisateur Active Directory incluent un certain nombre de champs pouvant être considérés comme un identifiant. Ce qui suit énumère certaines d'entre elles avec leur étiquette dans ADUC et leur nom d'attribut:

  • Nom complet - CN
  • ? - Nom
  • Utilisateur SamAccountName Logon - SamaccountName
  • Utilisateur UPN LOGON: UserPrinciPalName
  • ? - nom distingué

J'essaie d'amener nos développeurs à standardiser à l'utilisation d'un seul code personnalisé qui authentifie contre Ad-Difficultes est que je ne suis pas sûr qui est le "droit", ou si différents sont les différents dans différents conditions. Je ne suis même pas sûr que des champs ci-dessus devraient être utilisés!

Quelqu'un d'autre a-t-il choisi une personne à utiliser ou qui vous a influencé dans cette décision? Toute documentation qui clarifie le problème?

12
dunxd

Un CN (nom commun) n'est pas bon pour la journalisation, car un CN seul n'identifie pas de manière unique un utilisateur. Je pourrais avoir un

CN=Ryan Ries,OU=Dallas,DC=Domain,DC=com

et je pourrais aussi avoir un

CN=Ryan Ries,OU=New York,DC=Domain,DC=com

Le CN d'un utilisateur est également un RDN (nom distinctif relatif.) Ils ont le même CN, mais différents DNS. Vous remarquerez peut-être que vous rencontrez des problèmes si vous avez deux personnes dans votre organisation nommées Ryan Ries, et vous devrez faire le samaccountName pour le second quelque chose comme rries2.

Un DN (nom distinctif) n'est pas bon de se connecter, car ceux qui souhaitent se connecter à un système avec un nom d'utilisateur comme CN=ryan,OU=Texas,DC=brazzers,DC=com? Lorsque vous utilisez un DN, identifiera de manière unique et définitivement un utilisateur, il est ennuyeux de devoir taper. C'est le même type de concept entre les chemins relatifs et les chemins absolus sur un système de fichiers. Cela implique également que vous sachiez exactement où dans la structure de répertoire L'objet est situé sans avoir à le rechercher. Que vous ne le faites souvent pas.

Ceci s'appelle la résolution de noms ambiguës (ANR) - Recherche dans le répertoire d'un utilisateur lorsque vous n'avez pas son nom distingué.

UPN (nom de l'utilisateur) est assez bon car ils ressemblent à des adresses électroniques, elles peuvent être identiques à l'adresse e-mail d'entreprise de l'utilisateur, elles sont faciles à retenir et sont préférées de se connecter car le nom sera recherché. Dans le domaine local d'abord, avant de la chercher dans la forêt.

Microsoft dit: Le point de l'UPN consiste à consolider les espaces de nom de messagerie et de connexion afin que l'utilisateur n'ait besoin que de rappeler un seul nom. L'UPN est le nom de connexion préféré pour les utilisateurs Windows. Les utilisateurs doivent utiliser leurs UPNS pour vous connecter au domaine. Au moment de la connexion, une UPN est validée en premier en recherchant le domaine local, puis le catalogue global. L'échec de la recherche de l'UPN dans le domaine local ou de la GC entraîne un rejet de l'UPN. L'UPN peut être attribué mais n'est pas requis , lorsque le compte d'utilisateur est créé.

N'oubliez pas que "non obligatoire" le bit à la fin lors de la conception de vos applications.

SamAccountName est également bon car SamAccountName doit être unique pour tout le monde dans le domaine (mais pas la forêt.) De plus, les samaccountNames sont courts. La plupart des gens se connectent avec des samaccountnames, même s'ils ne vous identifient pas de manière unique dans une forêt additionnelle, c'est pourquoi vous devez spécifier un nom de domaine pour accompagner votre samaccountName afin que le système sache quel domaine vous essayez de vous connecter à .

Voici une grande documentation sur la question pour la lecture ultérieure:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms677605 (v = vs.85) .aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/MS680857 (v = vs.85) .aspx

18
Ryan Ries

Si vous parlez du nom d'utilisateur comme quelque chose que quelqu'un taperait à la connexion, je recommanderais soit sAMAccountName, qui serait unique en combinaison avec un nom de domaine ou le userPrincipalName, qui serait unique dans une forêt.

En ce qui concerne l'identifiant unique que l'identifiant unique, Windows utilise le SID pour toutes les entrées de contrôle d'accès et fournit un ensemble complet de méthodes de traduction à SIDS à partir de noms d'utilisateur. Les SID correspondent à la métaphor de l'utilisateur pour la durée de vie d'un compte, comme Renames et se déplace dans un domaine n'ont aucun effet, mais la suppression et la création de résultats dans un nouveau SID.

À cette fin, j'appellerais LookupAccountName , qui prend une chaîne représentant le nom d'utilisateur et renvoie le sAMAccountName, le nom SID et le nom de domaine du domaine que l'utilisateur a été trouvé dans.

L'utilisateur peut ensuite utiliser n'importe quelle syntaxe prise en charge par Windows pour vous connecter et aucune formation supplémentaire n'est requise.

4
Mitch

Je vous recommanderais de permettre à l'utilisateur de choisir le format du nom qu'il souhaite utiliser et de déterminer l'entrée de l'utilisateur sur le côté de l'application. Par exemple: si les types d'utilisateurs: nom d'[email protected] - considérez-le comme UPN et recherchez UPN en annonce. Si les types d'utilisateurs: Nom d'utilisateur - Considérez-le comme SamAccountName pour un domaine par défaut prédéfini et bien sûr si l'utilisateur Type de domaine\Nom d'utilisateur - Considérez-le comme SamAccountName à partir du domaine spécifié. Toujours récupérer le SID de l'utilisateur et attribuer toutes les autorisations au SID car les personnes se marient et que le nom d'utilisateur peut changer.

0
Stan