Active Directory-Benutzerobjekte enthalten eine Reihe von Feldern, die als Bezeichner betrachtet werden können. Im Folgenden werden einige davon mit ihrer Bezeichnung in ADUC und ihrem Attributnamen aufgeführt:
- Vollständiger Name - cn
- ? - Name
- Anmeldung von Benutzer sAMAccountName - sAMAccountName
- UPN-Benutzeranmeldung: userPrincipalName
- ? - Distinguished Name
Ich versuche, unsere Entwickler dazu zu bringen, beim Schreiben von benutzerdefiniertem Code, der sich gegen AD authentifiziert, nur einen dieser Codes zu verwenden. Ich bin mir nicht sicher, welcher "der richtige" ist oder ob verschiedene der richtige in verschiedenen sind Umstände. Ich bin mir nicht mal sicher, ob eines der oben genannten Felder verwendet werden sollte!
Hat sich jemand anderes für eine einheitliche Verwendung entschieden, und was hat Sie bei dieser Entscheidung beeinflusst? Irgendeine Dokumentation, die das Problem klärt?
Antworten:
Ein CN (Common Name) eignet sich nicht zum Anmelden, da ein CN allein einen Benutzer nicht eindeutig identifiziert. Ich könnte eine haben
CN=Ryan Ries,OU=Dallas,DC=Domain,DC=com
und ich könnte auch eine haben
CN=Ryan Ries,OU=New York,DC=Domain,DC=com
Die CN eines Benutzers ist auch eine RDN (Relative Distinguished Name). Sie haben dieselbe CN, aber unterschiedliche DNs. Möglicherweise stellen Sie fest, dass Sie auf Probleme stoßen, wenn Sie zwei Personen in Ihrer Organisation haben, die Ryan Ries heißen, und Sie müssen den SamAccountName für die zweite Person in etwa so festlegen
rries2
.Ein DN (Distinguished Name) ist nicht gut zum Anmelden, denn wer möchte sich mit einem Benutzernamen wie anmelden
CN=ryan,OU=Texas,DC=brazzers,DC=com
? Während die Verwendung eines DN einen Benutzer eindeutig identifiziert, ist es ärgerlich, ihn eingeben zu müssen. Es ist die gleiche Art von Konzept zwischen relativen Pfaden und absoluten Pfaden in einem Dateisystem. Dies bedeutet auch, dass Sie genau wissen, wo sich das Objekt in der Verzeichnisstruktur befindet, ohne dass Sie danach suchen müssen. Was du oft nicht tust.Dies wird als Ambiguous Name Resolution (ANR) bezeichnet und durchsucht das Verzeichnis nach einem Benutzer, wenn Sie nicht über seinen definierten Namen verfügen.
UPN (User Principal Name) ist ziemlich gut, da sie wie E-Mail-Adressen aussehen, mit der Unternehmens-E-Mail-Adresse des Benutzers identisch sein können, leicht zu merken sind und vorzugsweise angemeldet sind, da nach dem Namen gesucht wird Zuerst in der lokalen Domäne, bevor Sie in der Gesamtstruktur danach suchen.
Denken Sie daran, dass am Ende beim Entwerfen Ihrer Anwendungen das Bit "Nicht erforderlich" verwendet wird.
SamAccountName ist auch gut, da SamAccountName für jeden in der Domäne (aber nicht für die Gesamtstruktur) eindeutig sein muss. Außerdem sind SamAccountNames kurz. Die meisten Benutzer melden sich mit SamAccountNames an, obwohl sie Sie in einer AD-Gesamtstruktur nicht eindeutig identifizieren. Aus diesem Grund müssen Sie einen Domänennamen angeben, der zu Ihrem SamAccountName passt, damit das System weiß, bei welcher Domäne Sie sich anmelden möchten .
Hier ist eine großartige Dokumentation zu diesem Thema, die Sie weiterlesen können:
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
quelle
Wenn Sie den Benutzernamen als etwas bezeichnen, das jemand eingeben würde, um sich anzumelden, würde ich entweder empfehlen
sAMAccountName
, das in Kombination mit einem Domain-Namen eindeutig ist, oder dasuserPrincipalName
, das innerhalb einer Gesamtstruktur eindeutig ist.Was den Benutzernamen als eindeutige Kennung anbelangt, verwendet Windows die SID für alle Zugriffssteuerungseinträge und bietet einen vollständigen Satz von Methoden für die Übersetzung von Benutzernamen in SIDs. SIDs stimmen mit der Benutzermetapher für die Lebensdauer eines Kontos überein, da das Umbenennen und Verschieben innerhalb einer Domain keine Auswirkungen hat. Das Löschen und Neuerstellen führt jedoch zu einer neuen SID.
Zu diesem Zweck würde ich aufrufen
LookupAccountName
, der eine Zeichenfolge für den Benutzernamen verwendet und densAMAccountName
, denSID
und den Domänennamen der Domäne zurückgibt , in der der Benutzer gefunden wurde.Der Benutzer kann sich dann mit jeder von Windows unterstützten Syntax anmelden, und es sind keine zusätzlichen Schulungen erforderlich.
quelle
DOMAIN\Account
,DOMAIN.COM\Account
,Account
,[email protected]
. Es heißt zwar, dass vollqualifizierte Namen schneller sind, die anderen jedoch weiterhin verfügbar sind.Ich würde empfehlen, dem Benutzer zu erlauben, das Format des Namens zu wählen, den er verwenden möchte, und die Eingabe des Benutzers auf der Anwendungsseite zu bestimmen. Beispiel: Wenn der Benutzer Folgendes eingibt: Benutzername@Domäne.com - Betrachten Sie es als UPN und suchen Sie nach UPN in AD. Wenn der Benutzer Folgendes eingibt: Benutzername - Betrachten Sie es als samAccountName für eine vordefinierte Standarddomäne und natürlich, wenn der Benutzer Domäne \ Benutzername eingibt - Betrachten Sie es als samAccountName für die angegebene Domäne. Rufen Sie immer die SID des Benutzers ab und weisen Sie der SID alle Berechtigungen zu, da Personen heiraten und sich der Benutzername ändern kann.
quelle