UserPrincipalName (UPN)

Es ist eine gute Idee, wenn der UPN, die primäre Mailadresse und auch die SIP-Adresse des Benutzers identisch sind. Ansonsten können diverse Integrationsfunktionen, Autodiscover etc. nicht automatisch funktionieren.

Beachten Sie dazu auch Office 365:UPN / Anmeldename

2475891 Description of the Office Outlook 2007 hotfix package (Outlook-x-none.msp): February 22, 2011
2412171 Description of the Office Outlook 2007 Update: January 11, 2011
Hotfix 2412171 ändert das Standardverhalten, dass Outlook den UPN statt der primären SMTP-Adresse für Autodiscover verwendet.
Hinweis: Addieren Sie einfach den UPN als zusätzliche sekundäre SMTP-Adresse, damit Autodiscover wieder funktioniert
2512788 Description of the Office Outlook 2007 hotfix package (Outlook-x-none.msp): April 26, 2011

Viele Administratoren legen Benutzer an und geben wie schon seit vielen Jahren auch einen Kontonamen ein. Auch die meisten Anwender können schon lange das Anmeldeschema mit DOMÄNE\UserNAME. Aber seit Windows 2000 kann man sich auch über einen "UserPrincipalName" anmelden, welcher die Form "User@upnsuffix" hat. Das sehen Sie schon immer auf der Karteikarte beim Benutzer:

UPN beim Benutzer

Der User Logon Name ist der Teil vor dem UPN-Suffix und eine Zeile darunter steht der alte NT4 Anmeldename (SamAccountName). Interessant sind hier zwei Dinge:

  • UPN Suffix ist änderbar, die Domäne nicht
    Firmen ändern vielleicht ihren Namen oder werden konsolidiert. Den UPN kann man sogar bei Migrationen beibehalten und auch an aktuelle Namen anpassen, ohne dass Profil, Berechtigungen o.ä. verloren gehen würden.
  • UPN Suffix und Mailadresse können gleich sein
    Der UPNSuffix ist nicht an den Namen des Active Directory oder die Domäne gebunden, sondern kann ziemlich frei vergeben werden. Es bietet es sich gerade zu an, hier die Mailadresse des Benutzers zu verwenden, um dem Anwender die Anmeldung zu vereinfachen. Normalerweise kennt ein Anwender seine Mailadresse.

Anmelden mit UPN

Wenn Sie sich an einem PC anmelden, sehen sie gewöhnlich den klassischen Anmeldedialog.

Anmeldedialog ohne Domäne

Der normale Anwender sieht also nicht einmal die Domäne, was besonders in Umgebungen mit mehreren Domains natürlich zu Fehlern führen kann. Wenn Sie "Options" auswählen oder die Anmeldung fehlschlägt, dann zeigt ihnen Windows den erweiterten Anmeldedialog. Oft erkennen die dann hier, dass der vorherige Anwender vielleicht die falsche Domäne hinterlassen hat. (Tipp: per Gruppenrichtlinien können Sie die "DefaultDomain" vorgeben).

Anmeldedialog mit Domain

Interessant wird es aber, wenn Sie im Feld für den Anmeldenamen nach dem ersten Teil ein "@" eintippen. In dem Moment wird die Domäne "grau" und damit nicht mehr auswählbar.

Anmeldung mit UPN

Das ist auch nicht erforderlich, da Windows nun einen UPN erwartet. Und den passenden Benutzer dazu findet der Anmeldedienst sowieso im globalen Katalog.

UPN Suffix auf Forest eintragen

Für den Administrator stellt sich nun natürlich die Frage, wo die UPNs gepflegt werden, welche dann beim Benutzer ausgewählt werden können. Dazu muss man "Enterprise Administrator" sein, um über die Active Directory Domänen und Vertrauensstellungen" die UPN Suffixe für die Gesamtstruktur (Forest) zu pflegen:

UPN Suffix pflegen

Achtung
Die UPNSuffix-Liste wird im Feld UPNSuffixes an dem Objekte CN=Partitions,CN=Configuration,DC=rootdomain,DC=tld angelegt. Theoretisch sind hier 3937 Einträge möglich. Praktisch aber eher 1200. Quelle: https://blogs.technet.microsoft.com/askds/2015/10/29/administrative-limit-for-this-request-was-exceeded-error-from-active-directory/.
In Office 365 gibt es eine Obergrenze von 900 Domains (Stand Jan 2019)

UPNSuffix beim Benutzer ändern

Erst dann tauchen nach einer kurzen Zeit (Replikation abwarten) auch die neu eingegebenen UPN Suffixe bei den Benutzern zur Auswahl auf:

Allerdings kann ein Benutzer immer nur "GENAU EINEN" Anmeldenamen haben. Es gibt also keine Option, mehrere Anmeldenamen zu verwenden.

Die Information steht im Active Directory Feld "UserPrincipalName", welches eigentlich ein Freitext ist. Es ist daher denkbar, direkt beim Anwender auch andere Namen zu verwenden, aber davon rate ich natürlich ab.

UPN pro OU vorgeben

Die MMC für Benutz und Computer kann über einen Eintrag in der OU gesteuert werden. Sie können dort die UPN-Suffixe für die Anwender in dieser OU vorgeben, so dass ein Mitarbeiter beim Anlegen eines neuen Benutzers nur aus den UPN-Domains auswählen kann, die auf dieser OU hinterlegt sind.

Wenn Sie also genau eine UPN-Domain auf der OU hinterlegen, bekommen alle neuen Anwender diese Domain. Die Änderung ist per ADSIEDIT oder auch über dsa.msc mit der erweiterten Ansicht möglich:

Hinweis: Die MMC prüft nicht, ob sie die UPN-Domain auch in die Forest-Liste eingetragen haben. Sie können damit als auch einen UPN angeben, der nicht im Forest explizit freigegeben ist.

Bestandskonten werden durch diese Änderung nicht angepasst. Das können Sie aber per PowerShell nachholen, wenn Sie den Localpart z.B. aus dem SAMAccountname ableiten.

Get-ADUser `
   -Filter * `
   -SearchBase ‘ou=firma1,dc=msfaq,dc=de‘ `
   -Properties userPrincipalName `
| foreach {`
     Set-ADUser $_ `
         -UserPrincipalName "$($_.samaccountname)@firma1.tld" `
}

UPN prüfen

Es bietet sich natürlich an, regelmäßig die Einträge von MAIL und UserPrincipalName zu prüfen. Dazu habe ich ein kleines PowerShell Skript geschrieben, welches Sie z.B. per Taskplaner regelmäßig starten können.

check-upn.1.0.ps1

Sie können es einfach auf der PowerShell aufrufen. Es verbindet sich mit dem GC und sucht alle "normalen" Benutzer mit einer Mailadresse und vergleicht diese mit dem Feld "MAIL", welches in der Regel die primäre SMTP-Adresse enthält.

Die Daten werden in eine PIPE ausgegeben, so dass Sie mit " | export-csv datei.csv" die Liste auch in einer CSV-Textdatei schreiben können.

Konsoleausgabe von Check-UPN

Unstimmigkeiten werden mit "write-warning" sowohl auf die Konsole geschrieben, als auch in das Eventlog.

Check-UPN Eventlog meldnug

So können Sie das Skript auf dem Server regelmäßig laufen lassen und die Events mit einer Überwachungssoftware kontrollieren. Natürlich können Sie das Skript noch erweitern, so dass Sie eine Mail bekommen.

Das Skript ändert aber nicht die Einträge und prüft auch nicht, ob die verwendeten UPNs global konfiguriert sein. Mit ADModify.NET können solche Felder aber sehr einfach für viele Personen gesetzt werden.

Eine einfachere Version mit Hilfe der Exchange Commandlets und weniger Funktionen fällt etwas kürzer aus:

foreach ($User in get-User) {
   write-host processing $User.samaccountname -nonewline
   [string]$sam = $User.samaccountname
   [string]$upn = "$sam@meinedomain.tld"
   if ($User.UserPrincipalName -eq $upn){
      write-host " UPNOK: $upn" -background green -foreground black
   }
   else {
      write-host " UPNFIX:$upn" -backgroundcolor yellow
      set-User -identity $sam -UserPrincipalName $upn
   }
}

Das Skript setzt einfach stumpf den UPN auf den SAM-Accountname und ergänzt ihn um "@meinedomain.tld". Das muss natürlich angepasst werden.

Aber auch mit Bordmitteln lassen sich erste einfache Checks durchführen:

REM Anzeige von doppelten UPNs mit SetSPN
c:\>setspn.exe -T * -x

Weitere Links