Jak jistě víte, v Active Directory existují od roku 2000 dva "loginy". Prostě každý uživatel má dvě přihlašovací jména. Jedno se jmenuje user principal name (UPN) a je uložené v atributu userPrincipalName. Druhé je security accounts manager account name a je uloženo v atributu samAccountName.
UPN je ve formátu login@upn.suffix. UPN suffix je ve výchozím stavu FQDN jméno domény, takže něco jako gopas.local, nebo ad.gopas.cz. UPN suffixy se ale dají přidávat libovolné, takže uživatelé mohou mít UPN úplně stejné, jako emailovou adresu. Prefix, tedy to co se nazývá nesprávně login, může mít až 64 znaků.
Naopak SAM account name je složeno vždy natvrdo ve formátu NETBIOSDOMAIN\samlogin. Jméno domény je vždy to tzv. "staré jméno", to krátké NetBIOS jméno domény, které může mít maximálně 15 znaků. "Login" uživatele jsem schválně napsal jako samlogin, protože to může být úplně jiné, než je použitý login u UPN. Nejen že může být jiný, on také musí být jiný za určitých okolností. Samlogin může být totiž maximálně 20 znaků, takže pokud upnlogin máte delší (až 64), tak se samlogin bude lišit stoprocentně.
SAM account name mít musíte, musí být unikátní v doméně. UPN mít nemusíte vůbec. Pokud ho ale máte, musí být unikátní celoforestově.
Podle SAM account name se například pojmenovávají profilové adresáře a obsahuje ho i proměnná prostředí %USERNAME%, bez ohledu na to, jaký login jste zadali při přihlašování.
Řadiče domény (DC), od domain functional level (DFL) na úrovni Windows 2003 umožňují dokonce, abyste při vytváření uživatelských účtů zadali pouze UPN. SAM account name se potom vygeneruje automaticky s náhodnou hodnotou.
Dobře. V DSA konzoli se SAM account name nazývá Pre-Windows 2000 user account name. Snaží se to naznačit, že by se mělo nově, od roku 2000 používat raději UPN. Ale obvykle všechny aplikace přijímají jedno z nich a je jedno které.
Až na některé idiotské aplikace
Jako je třeba SQL Server až do verze 2012. Známému (Erik Caha) dokonce přímo sám vývojový tým sdělil, že použití UPN se ani nikdy do budoucna neplánuje. Pokud tedy chcete založit například login do SQL serveru, UPN prostě použít nemůžete. Nejde ani zadat do .INI souboru pro automatickou instalaci.
Druhý kámoš je SharePoint 2010. Zrovna skriptuju automatickou instalaci. Všude to jde zadat jako UPN, jenom do farm administrators skupiny musím přidávat SAM account name. Krása. Ještě že je rok 2012.
Duplicitní SAM account name
Když už se tu tak rozepisuji, tak ještě jedna zajímavost. Loginy musí být samozřejmě unikátní. To se kontroluje při jejich vytváření. Ale AD je distribuovaný systém s multimaster replikací, takže nějaké chyby nastávat mohou.
Duplicitní SAM account name i UPN tedy samozřejmě vzniknout mohou. Buď kvůli replikačnímu spoždění (replication latency), nebo třeba kvůli obnově smazaných objektů apod.
Když tohle nastane, AD to zprvu nijak neřeší. Až v okamžiku, kdy se pokoušíte ověřit jedním z těch loginů, DC vyhledá více možných výsledků. Pokud se hlásíte pomocí UPN, přihlásí vás na první účet ze seznamu těch duplicitních (x-plicitních) a dál to neřeší. Pokud se hlásíte pomocí SAM account name, přihlásí vás také na první z nich. Ale v případě SAM account name ještě navíc ty ostatní loginy přejmenuje na $DUPLICATE a náhodné číslo.
Takhle se projevují mnohdy třeba účty počítačů, pokud je vytváříte nějak automaticky, připojujete počítače z image, a máte problémy s replikací, nebo jen spoždění mezi pobočkami a sítěmi.