Anmeldung am Active Directory mit einem Linux Client
Anmeldung am Active Directory mit einem Linux Client
... gibt es dafür eine Lösung für FPC?
HG, Armin.
HG, Armin.
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Anmeldung am Active Directory mit einem Linux Client
Gegenfrage, wie geht es unter Linux selbst ? Und was meinst du genau mit Anmeldung ? Bei M$ kann man die Anmeldung sehr weit hinunter skalieren. Genaugenommen kann alles ein Securitytoken haben.
Bis jetzt habe ich nur gegen PDC Erfahrung mit Shares gehabt, aber nicht gegen AD. Und gegen den PDC hat oft geholfen, einfach einen TProzess zu verwenden und die Befehle vom Terminal zu verwenden.
Bis jetzt habe ich nur gegen PDC Erfahrung mit Shares gehabt, aber nicht gegen AD. Und gegen den PDC hat oft geholfen, einfach einen TProzess zu verwenden und die Befehle vom Terminal zu verwenden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Anmeldung am Active Directory mit einem Linux Client
Ich hab da ein Windows Programm, das einen eigenen Login erfordert, mit Username und Passwort. Jetzt ist gerade eine Diskussion ausgebrochen ob ich es auf Linux portieren kann. Soweit ich weiß, geht das nicht. M$ hat nie einen AD Client für Linux herausgegeben. Andere sind anderer Meinung, meinen hier und dort irgendwas gesehen oder gehört zu haben und seit Microsoft sich so offen gibt und da es SAMBA gibt und den MS SQL Server für Linux (der *möglicherweise, wenn er zum Windows Produkt aufschließen möchte, Pass-Through Authentifizierung unterstützenh könnte) und es gibt sogar ein .net Framework für Linux - da *muss* das doch *irgendwie* gehen. Meint man.
Ich glaubs erst wenn ich den Quellcode gesehen habe
Armin.
Ich glaubs erst wenn ich den Quellcode gesehen habe

Armin.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Anmeldung am Active Directory mit einem Linux Client
Mit LDAP kannst du das Verzeichnis des AD abfragen. Du kannst also einfach prüfen, ob dein Programm sich mit dein eingegebenen Anmeldedaten dort authentifizieren kann.
Das geht z.B. mit Synapse: http://www.ararat.cz/synapse/doku.php/p ... ldapsample. Alternativ bringt FPC in der Unit "ldap" die Bindings für die gleichnamige Bibliothek (libldap) mit. Damit kannst du ggf. vorhandene C-Beispiele nach Pascal portieren.
Das geht z.B. mit Synapse: http://www.ararat.cz/synapse/doku.php/p ... ldapsample. Alternativ bringt FPC in der Unit "ldap" die Bindings für die gleichnamige Bibliothek (libldap) mit. Damit kannst du ggf. vorhandene C-Beispiele nach Pascal portieren.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Anmeldung am Active Directory mit einem Linux Client
Du wirst zuersk einmal den Linux-Computer in das AD bringen müssen. Erst dann wird du die Möglichkeit haben LDAP Anfragen an das AD zu richten.
zB: Englisch
https://computingforgeeks.com/join-ubun ... ad-domain/
https://www.datasunrise.com/blog/profes ... ry-domain/
https://www.redhat.com/sysadmin/linux-active-directory
dazu gibt es jede Menge an Infos.
Erst wenn der PC ein Member ist, kannst du mit LDAP mittels Synapse was weiterbringen. Ich würde es zuerst einmal mit den Kommandozeilen Tools versuchen.
Deutsch
https://www.thomas-krenn.com/de/wiki/Pa ... einrichten - nur für die LDAP Tests, nicht gleich das ganze Pam installieren !
zB: Englisch
https://computingforgeeks.com/join-ubun ... ad-domain/
https://www.datasunrise.com/blog/profes ... ry-domain/
https://www.redhat.com/sysadmin/linux-active-directory
dazu gibt es jede Menge an Infos.
Erst wenn der PC ein Member ist, kannst du mit LDAP mittels Synapse was weiterbringen. Ich würde es zuerst einmal mit den Kommandozeilen Tools versuchen.
Deutsch
https://www.thomas-krenn.com/de/wiki/Pa ... einrichten - nur für die LDAP Tests, nicht gleich das ganze Pam installieren !
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Anmeldung am Active Directory mit einem Linux Client
Danke für die Links. Ich acker mich morgen durch.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Anmeldung am Active Directory mit einem Linux Client
Das musst du nur machen, wenn du den User gegen die lokale Linux-Authentifizierung prüfst, welche ihrerseits per Kerberos das AD abfragt. Das hat mit LDAP nichts zu tun.af0815 hat geschrieben: Di 23. Nov 2021, 19:28 Du wirst zuersk einmal den Linux-Computer in das AD bringen müssen. Erst dann wird du die Möglichkeit haben LDAP Anfragen an das AD zu richten.
LDAP hingegen ist ein Netzwerkprotokoll, wie du Verzeichnisse (u.A. MS AD) abfragen kannst. Dazu brauchst du nur eine Netzwerkverbindung und die Lese-Berechtigungen im Verzeichnis. Ohne groß programmieren zu müssen, kann man das unter Linux auch mit cURL testen: https://stackoverflow.com/questions/445 ... l/44547176
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Anmeldung am Active Directory mit einem Linux Client
Meinen letzten Erfahrungen nach (ist ein wenig her) bekomme ich von der AD bei LDAP Anfragen nicht wirklich gute Antworten, solange ich nicht zumindest mit dem Computer in der AD bekannt bin. Fällt nicht gleich auf, erst wenn man mal den Rechner oder die VM wechselt, weil beim testen meldet man sich gerne mal an.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Anmeldung am Active Directory mit einem Linux Client
Ist auch mein Stand. Ohne Secure Channel ins AD keine Verbindung. Der ganze Komplex AD und LDAP und Microsoft ist ein einziger Nebelhaufen. Sobald ich mich durch Massen von warmer Luft gewühlt habe, lande ich gewöhnlich bei läppischen "Lösungen", siehe Attribute userPassword bzw. unicodePwd. Im Moment forsche ich Richtung OAuth2 Support.
Re: Anmeldung am Active Directory mit einem Linux Client
Ich habe das über 'ADODB.Connection' gelöst; sollte auch unter Linux funktionieren.
Hier mal ein paar "Bruchstücke"
Ich habe jetzt nur ein paar Teile aus einem großen Projekt heraus kopiert.
Schau mal, wie weit du damit kommst.
Sollten Fragen sein, schau ich gerne nochmal nach.
Hier mal ein paar "Bruchstücke"
Code: Alles auswählen
var
objConnection:Variant;
ConnectionString='Provider=ADSDSOObject;'+
'Encrypt Password=true;'+
'Integrated Security=SSPI;'+
'Data Source=LDAP://my.Domain.de:636;'+
'Mode=Read;'+
'Bind Flags=0;' +
'ADSI Flag='+inttostr(
ADS_SECURE_AUTHENTICATION or
ADS_USE_ENCRYPTION or
//ADS_READONLY_SERVER or
//ADS_PROMPT_CREDENTIALS or
//ADS_NO_AUTHENTICATION or
//ADS_FAST_BIND or
ADS_USE_SIGNING or
ADS_USE_SEALING or
//ADS_USE_DELEGATION or
ADS_SERVER_BIND or
//ADS_NO_REFERRAL_CHASING or
//ADS_AUTH_RESERVED or
0
)+';';
const ADS_SECURE_AUTHENTICATION = 1; //0x1
const ADS_USE_ENCRYPTION = 2; //0x2
const ADS_USE_SSL = 2; //0x2
const ADS_READONLY_SERVER = 4; //0x4
const ADS_PROMPT_CREDENTIALS = 8; //0x8
const ADS_NO_AUTHENTICATION = 16; //0x10
const ADS_FAST_BIND = 32; //0x20
const ADS_USE_SIGNING = 64; //0x40
const ADS_USE_SEALING = 128; //0x80
const ADS_USE_DELEGATION = 256; //0x100
const ADS_SERVER_BIND = 512; //0x200
const ADS_NO_REFERRAL_CHASING = 1024; //0x400
const ADS_AUTH_RESERVED = 2147483648; //0x80000000
objConnection := CreateOleObject('ADODB.Connection');
objConnection.Provider := 'ADsDSOObject';
objConnection.ConnectionString:=ConnectionString;
objConnection.Open('Active Directory Provider');
procedure GET_USER_DATA(var USER:TUser);
var
objCommand,objRecordSet:Variant;
xmlDoc:TXMLDocument;
i, j:integer;
xml, premail, primarymail:string;
Liste:TStringlist;
S:TSTringSTream;
is_value:boolean;
begin
try
// Get AD-Data
objCommand := CreateOleObject('ADODB.Command');
objCommand.ActiveConnection := objConnection;
objCommand.Properties['Page Size'] := 10;
objCommand.Properties['Searchscope'] := ADS_SCOPE_SUBTREE;
objCommand.CommandText := widestring(
'SELECT cn,company,department,displayname, facsimileTelephoneNumber,givenname,mail,userPrincipalname,sn,streetAddress,telephoneNumber FROM ''LDAP://DC=polizei,DC=hessen,DC=de'' ' +
'WHERE objectClass=''user'' AND objectCategory=''person'' AND name='''+USER.persid+''''
);
objRecordSet := objCommand.Execute;
try
is_value:= objRecordSet.eof and objRecordSet.bof;
except
is_value:=false;
end;
if is_value then
begin
// Kein AD User (mehr)
....
end else
begin
// Ist noch AD User
try
objRecordSet.moveFirst;
if objRecordSet.Fields['cn'] <> NULL then
try USER.persid:=vartostr(objRecordSet.Fields['cn'].Value); except end
else
USER.persid:='';
....
finally
objCommand:=NULL;
objRecordSet:=NULL;
end;
end;
end;
Schau mal, wie weit du damit kommst.
Sollten Fragen sein, schau ich gerne nochmal nach.
Gruß, Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Anmeldung am Active Directory mit einem Linux Client
@six1
Sieht sehr elegant aus, IMHO muss sich der Treiber mit der Authentizierung herumschlagen. Zusätzlich sieht es aus, als würde das eine Win only Lösung sein. Die ADODB Connection und ADsDSOObject würde für mich darauf hinweisen. Ist natürlich geil die Möglichkeit zu verwenden LDAP in SQL zu mappen. Ich fürchte nur, das das ganze mit Linux nicht so einfach ist, da ich bis jetzt keinen Treiber für solche Sachen gefunden habe. AUs dem Samba Projekt ist mir nur der klassische Weg über LDAP bekannt.
Sieht sehr elegant aus, IMHO muss sich der Treiber mit der Authentizierung herumschlagen. Zusätzlich sieht es aus, als würde das eine Win only Lösung sein. Die ADODB Connection und ADsDSOObject würde für mich darauf hinweisen. Ist natürlich geil die Möglichkeit zu verwenden LDAP in SQL zu mappen. Ich fürchte nur, das das ganze mit Linux nicht so einfach ist, da ich bis jetzt keinen Treiber für solche Sachen gefunden habe. AUs dem Samba Projekt ist mir nur der klassische Weg über LDAP bekannt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 954
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Anmeldung am Active Directory mit einem Linux Client
Das scheitert schon an CreateOLEObject. COM (und damit auch OLE) existieren nur unter Windows (ich ignoriere hier jetzt mal XPCOM, da dies auch keine Verbindung zu einem anderen Rechner erlaubt).six1 hat geschrieben: Mi 24. Nov 2021, 12:37 Ich habe das über 'ADODB.Connection' gelöst; sollte auch unter Linux funktionieren.
FPC Compiler Entwickler