Zum Inhalt springen

Ihr Profils seit gefragt: AD Group über SID auslesen


Empfohlene Beiträge

Geschrieben

VS 2010 C# .Net4.0

Hallo Leutz,

mal wieder eine schöne Aufgabe zum Knobeln.

Situation: Wenn sich ein User in meinem Firmennetzwerk anmeldet bekommt sein Client alle ihm zugewiesenen ADS-Gruppen aktualisiert. Diese können dann von verschiedenen Programmen abgefragt und zur Berechtigungsregulierung verwendet werden. So etwa in der Art: ist der Anwender in der Gruppe XYZ ( isInRole() ), dann darfst du Funktion A nutzen... Das funktioniert auch super. Nun möchte ich aber eine Einwahlsoftware auf den Clients einsetzen, die dann über die ADS-Gruppen verschiedene Berechtigung setzen soll. Z.B. Gruppe G_Auslandseinwahl.

Und nun mein Problem: Da nun aber keine Netzwerkverbindung ins Unternehmen besteht wenn der Anwender sich im Ausland anmeldet, kann ich leider die oben beschriebene Funktionalität nicht verwenden.

Was möchte ich: Auslesen der AD Gruppen im Offlinebetrieb.

Use Global Catalog and CheckTokenMembership to check AD group membership NetInverse Developers Blog

Das habe ich schon versucht, doch leider ist hier das selbe Problem das der GC nur auf den Domaincontrollern verfügbar ist.

Ideen? Danke schon mal.

Geschrieben

DLL Import



//Wird benötigt um die SID zu konvertieren.
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool ConvertStringSidToSid(string StringSid, out IntPtr ptrSid);

//Prüft über die SID die Gruppe zum User
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool CheckTokenMembership(IntPtr TokenHandle, IntPtr SidToCheck, out bool IsMember);

[/PHP]

Die SID findet Ihr in der ADS. Jeder ADS-Gruppe ist eine SID zugeordnet. Diese bleibt in der Regel immer gleich. Zm solange an der ADS-Gruppe keine Änderungen durchgeführt werden.

Um an die SID zu gelangen müsst Ihr entweder die ADS befragen. Oder Ihr legt die SID statisch auf dem Client ab, z.B in der Registry oder in einem File.

So und so siehst dann die Methode aus um die Berechtigung zu prüfen.

[PHP]

public static bool SecurityRole(string strSID, bool bTrace)
{
try
{

IntPtr ptrSID = IntPtr.Zero;
bool bIsMember = false;

if(SID.ConvertStringSidToSid(strSID, out ptrSID) == true)
SID.CheckTokenMembership(IntPtr.Zero, ptrSID, out bIsMember);

return bIsMember;
}
catch (Exception objException)
{
//TODO....
return false;
}
}

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...