2016-04-29 13 views
0

Ich möchte eine generische Authentifizierungs-/Autorisierungsbibliothek basierend auf Benutzern, Abteilungen entwickeln, wobei jede Abteilung Ansprüche hat und Benutzer Rollen haben können und so weiter. Nach so viel Nachdenken und Suchen im Web denke ich, dass der am besten geeignete Weg (basierend auf meinen Szenarien) darin besteht, eine LDAP-ähnliche Struktur zu entwickeln. So konnte ich sogar eine Integration mit Active Directory/OpenLDAP entwickeln.Gibt es eine Bibliothek, um eine LDAP-ähnliche Objektstruktur für C# bereitzustellen?

LDAP Structure Bild von here genommen

Vor meiner eigenen Bibliothek zu machen, würde ich weiß: Gibt es eine Bibliothek, die bereits Objekte dem Ziel, diese Struktur (auf diese Weise ich erben könnte und anpassen) bietet? Ich weiß, dass wir System.DirectoryServices von .NET Framework und die entsprechende Bibliothek von Mono haben, aber ich konnte nicht finden, wo die "Entry" -Klassen sind. Ich weiß, dass es eine von Novell erstellte Bibliothek gibt, die auch auf LDAP abzielt, aber ich denke, dass es im Internet viel veraltetes gibt.

EDIT

Ich habe DirectoryEntry class gefunden, die nahe kommt, aber ich konnte nicht überprüfen, ob es Mono-kompatibel ist.

+1

Der System.DirectoryServices-Namespace (zu dem DirectoryEntry gehört) ist [in Mono] implementiert (https://github.com/mono/mono/tree/master/mcs/class/System.DirectoryServices). –

Antwort

1

Wie Sie wahrscheinlich festgestellt haben, gibt es viele, viele verschiedene Implementierungen des LDAP-Protokolls bei einer Vielzahl von Anbietern, so dass es nahezu unmöglich ist, eine universelle Bibliothek zu finden.

Sie sind jedoch davon ausgegangen, dass viele der gleichen Konzepte (Gruppen, Domänen, einzelne Einträge usw.) gelten unabhängig davon, mit welchem ​​Anbieter Sie arbeiten, und sogar den Prozess der Verbindung zu einem bestimmten Verzeichnisserver, der einen Filter basierend auf LDAP syntax anwendet und dann die zurückgegebenen Ergebnisse verarbeitet, ist extrem verbreitet.

Also, obwohl diese Bibliothek nicht existiert, können Sie sicherlich eine Schnittstelle um die allgemeinen Konzepte bauen, von denen alle Ihre spezifischen Implementierungen erben würde.

Aus technischer Sicht, würden Sie überrascht sein, wie tragbare DirectoryEntry ist - ich habe es zusammen mit einigen grundlegenden Konstrukte aus System.DirectoryServices.Protocols verwenden, um Active Directory zu verbinden und zu binden, iPlanet und OpenDJ, und es funktioniert wunderbar.

Sie erwähnten auch Novell - dafür verwendete ich ihre .Net-Bibliothek Novell.Directory.Ldap, die you can find here. Sie werden feststellen, dass das Konzept eines "Eintrags" auch hier verfügbar ist und in der Klasse LdapEntry enthalten ist.

+0

Ich wünschte ich könnte mehr als 1x deine Antwort verbessern. Sicherlich wird es mir auf meiner Reise helfen. Vielen Dank! –