AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Prism Active Directory mit LDAP auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Active Directory mit LDAP auslesen

Ein Thema von Darth_Metaler · begonnen am 6. Jan 2006 · letzter Beitrag vom 23. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
Darth_Metaler

Registriert seit: 4. Jan 2006
Ort: Nohfelden
11 Beiträge
 
Delphi 2005 Architect
 
#1

Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 11:48
Hi Delphi-User

Ich habe folgendes Problem:

ich möchte mit ASP.NET das Active Directory über LDAP auslesen. Ich bin soweit, dass ich bestimmte Organization Units angezeigt bekomme und dann die Inhalte dieser Organization Units auslesen kann.

Delphi-Quellcode:
// Button zur Anmeldung
procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs);
var
  DE, child: DirectoryEntry;
  Arr: ArrayList;
begin
  DE := DirectoryEntry.Create('LDAP://servername/OU=Test Organisation,DC=...,DC=...,DC=DE', User.Text, Passwort.Text);

  Arr := ArrayList.Create;
  for child in DE.Children do Arr.Add(TObject(child.name));

  OUList.DataSource := Arr;
  OUList.DataBind;
end;
Delphi-Quellcode:
// Button für Inhalte einer OU
procedure TWebForm1.Button2_Click(sender: System.Object; e: System.EventArgs);
var
  DE, dcOU, child: DirectoryEntry;
  Arr: ArrayList;
begin
  DE := DirectoryEntry.Create('LDAP://servername/OU=Test Organisation,DC=...,DC=...,DC=DE', User.Text, Passwort.Text);

  dcOU := DE.Children.Find(OUList.SelectedValue);

  Arr := ArrayList.Create;

  for child in dcOU.Children do Arr.Add(TObject(child.name));

  ListBox1.DataSource := Arr;
  ListBox1.DataBind;
end;
Jetzt möchte ich wissen, wie ich mit LDAP rausfinden kann, in welchen Gruppen ein bestimmter User ist, dass er z.B. bei Administrator Admin und User und bei Max nur User zurückgibt. Das soll er unter ASP.NET in einer ASP-ListBox ausgeben.

Bedank mich im voraus schon für eure antworten, ich komm da echt nich mehr weiter

MfG
Pascal
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 12:17
Ich arbeite nicht mit Active Directory, sondern ich greife die Benutzer, Gruppen und Dienste mit dem "WinNT://"-Präfix ab, aber vllt. hilft es dir trotzdem weiter. Ist aber CSharp. "x" ist ein DirectoryEntry, den ich ausgelesen habe. Handelt es sich dabei um einen Benutzer, dann kann ich so die Gruppen ermitteln, in denen der Benutzer ist:
Code:
if (x.SchemaClassName == "User")
{
  object groups = x.Invoke("Groups");
  foreach (object group in (IEnumerable)groups)
  {
    DirectoryEntry groupEntry = new DirectoryEntry(group);
    MessageBox.Show(String.Format("Benutzer {0} ist Mitglied der Gruppe {1}",
                                  x.Name,
                                  groupEntry.Name));
  }
}
  Mit Zitat antworten Zitat
Darth_Metaler

Registriert seit: 4. Jan 2006
Ort: Nohfelden
11 Beiträge
 
Delphi 2005 Architect
 
#3

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 13:11
danke, war schon ein sehr guter ansatz

nur... unter Delphi ist die Syntax der Funktion
function Invoke(methodName: string; args: array of TObject): TObject; und wenn ich die Funktion so aufrufe:
groups := dcCN.Invoke('groups', []); bekomme ich nichts zurück... weiß jemand was ich für args angeben muss

danke im voraus

MfG
Pascal

[[edit]]

hier die Umsetzung:
Delphi-Quellcode:
procedure TWebForm1.Button3_Click(sender: System.Object; e: System.EventArgs);
var
  DE, dcOU, dcCN, groupEntry: DirectoryEntry;
  group, groups: TObject;
  Arr : ArrayList;
begin
  DE := DirectoryEntry.Create('LDAP://servername/OU=Test Organisation,DC=...,DC=...,DC=DE', User.Text, Passwort.Text);

  dcOU := DE.Children.Find(OUList.SelectedValue); // z.B. OU=USERS

  dcCN := dcOU.Children.Find(ListBox1.SelectedValue); // z.B. CN=Max Mustermann (mitglied der TestGruppe)

  Arr := ArrayList.Create;

  if(dcCN.SchemaClassName = 'user') then begin
    groups := dcCN.Invoke('groups', []);
    for group in IEnumerable(groups) do begin
      groupEntry := DirectoryEntry.Create(group);
      Arr.Add(groupEntry.Name);
    end;
  end;

  ListBox2.DataSource := Arr;
  ListBox2.DataBind;
end;
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 13:29
*grins* Wofür gibt´s denn den Reflector? Ich habe gerade mal meine CSharp-Exe geladen und mir den Code als Delphi anzeigen lassen:
Delphi-Quellcode:
if (entry1.SchemaClassName = 'User') then
begin
  obj1 := entry1.Invoke('Groups', New(array[0] of TObject));

  for obj2 in (obj1 as IEnumerable) do
  begin
    entry2 := DirectoryEntry.Create(obj2);
    MessageBox.Show(string.Format('Benutzer {0} ist Mitglied der Gruppe {1}',
                    entry1.Name,
                    entry2.Name))
  end
end
Hilft dir das?


Edit: Beachte auch die Schreibweise von "User" und "Groups". Vllt. spielt´s ja auch keine Rolle, aber im Zweifel würde ich den ersten Buchstaben groß schreiben.
  Mit Zitat antworten Zitat
Darth_Metaler

Registriert seit: 4. Jan 2006
Ort: Nohfelden
11 Beiträge
 
Delphi 2005 Architect
 
#5

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 13:54
hmm nee wenn ich das mit New(array[0] of TObject); probiere, gehts nich wirklich. Und wenn ich nil angebe, auch net... ich hab keine Ahnung, woran das liegen könnte
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 13:55
Hallo!

Liegts jetzt daran, dass du C# nicht in Delphi.NET umsetzen kannst, oder der Code nicht funktioniert?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Darth_Metaler

Registriert seit: 4. Jan 2006
Ort: Nohfelden
11 Beiträge
 
Delphi 2005 Architect
 
#7

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 14:05
ich denk ma eher dass der code nicht funktioniert, weil den C# code hab ich ja umsetzen können, wurde auch compiliert und ich kann die datei ausführen. Ich bekomm nur keine Gruppen bei einem bestimmten User aufgelistet ...
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#8

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 14:11
Hast du die Schreibweise von Groups und User beachtet?
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 14:14
Zumindest bei "User" solltest du das U groß schreiben, wenn du bei der if-Bedingung
Zitat:
if(dcCN.SchemaClassName = 'user') then begin
bleiben willst. Ansonsten spielt es keine Rolle, wie ich gerade mit
Code:
object groups = x.Invoke("groups");
festgestellt habe.
  Mit Zitat antworten Zitat
Darth_Metaler

Registriert seit: 4. Jan 2006
Ort: Nohfelden
11 Beiträge
 
Delphi 2005 Architect
 
#10

Re: Active Directory mit LDAP auslesen

  Alt 6. Jan 2006, 14:21
ich hab das Problem einfach mit if(dcCN.SchemaClassName.ToLower = 'user') then begin umgangen ^^ aber er listet trotzdem nichts auf
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz