Laden...

[gelöst]Via SUSER_NAME() den UPN abfragen?

Erstellt von UncleBens vor 13 Jahren Letzter Beitrag vor 13 Jahren 950 Views
U
UncleBens Themenstarter:in
135 Beiträge seit 2009
vor 13 Jahren
[gelöst]Via SUSER_NAME() den UPN abfragen?

Hallo zusammen,

gibt es eine Möglichkeit, vom SQL Server (2008 R2) den Namen des aktuell via Windows Authentication verbundenen Users als UPN (Universal Principal Name) zu erhalten?

SUSER_NAME() liefert den Namen im Format DOMAIN\User... ich bräuchte aber user@domain.de

Besten Dank schonmal für Tipps
SYK

G
538 Beiträge seit 2008
vor 13 Jahren

Ich befürchte, dass es keine Entsprechende Variante gibt.
Vermutlich willst du aber auch eher SUSER_SNAME() nutzen.

Du kannst allerdings per ADSI eine Verbindung zum AD herstellen und eine Emailadresse des Nutzers dort auslesen.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

U
UncleBens Themenstarter:in
135 Beiträge seit 2009
vor 13 Jahren

Vermutlich willst du aber auch eher SUSER_SNAME() nutzen.

Klar, meine ich - sorry... aber hey, wenigstens konsequent sowohl in der Überschrift als auch im eigentlichen Content vertippt 😉

Kurz zum Verständnis, was ich eigentlich machen möchte... vielleicht denke ich ja auch von hinten durch die Brust ins Auge und jemand hat eine bessere Idee.

Ich habe eine Tabelle, bei der ich Berechtigungen auf Row-Level nutze, wie in folgendem MSDN-Artikel beschrieben:
http://msdn.microsoft.com/de-de/library/bb669076.aspx

Das klappt grundsätzlich auch wunderbar, allerdings habe ich einen kleinen Extrawunsch: zusätzlich zum aktuellen User, soll auch dessen Manager den Datensatz lesen können. Den aus dem Manager-Attribut des aktuellen Users im AD auszulesen, ist grundsätzlich auch kein Problem.
Aber: der Manager ist im AD-Attribut im Format CN=Toller Chef,CN=Users,DC=meinedomain,DC=de gespeichert. Ich brauche ihn aber im gleichen Format, wie ihn mir SUSER_SNAME zurückliefert, also etwa MEINEDOMAIN\tchef.
Dummerweise gibt es aber kein Attribut am AD-User, in welchem dieses Format gespeichert wäre. Den UPN gibt es allerdings (nämlich im gleichnamigen Attribut userPrincipalName). Daher auch meine Frage, ob man SUSER_SNAME irgendwie als UPN zurückliefern lassen kann. Aber vielleicht gibts ja noch einen anderen Lösungsansatz, den mir momentan das Brett vor meinem Kopf verdeckt 😉

@Mods: sorry, das Thema schwankt etwas zwischen Daten- und Netzwerktechnologien... momentan wahrscheinlich mit etwas Übergewicht in Richtung AD/Netz... falls Ihr das Thema eher im Netzwerkbereich seht und den Thread verschieben wollt: feel free 😁

U
UncleBens Themenstarter:in
135 Beiträge seit 2009
vor 13 Jahren
Die Lösung kann so einfach sein...

MS sei Dank 😉

Mit WMI sollte ich zum Ziel kommen...

ManagementObjectSearcher mos = new ManagementObjectSearcher("select caption from Win32_UserAccount where Name = 'tchef");
            foreach (ManagementObject mobject in mos.Get())
            {
                Console.WriteLine(mobject["caption"].ToString());
            }
            Console.ReadKey();

In caption steckt MEINEDOMAIN\tchef
Muss zwar noch ein paar Kleinigkeiten umbauen, aber damit sollte es gehen.