joergb
Goto Top

Squid Authentifizierung an mehreren W2003 Domänen

Hallo und Guten Tag

Ich habe hier im Forum schon über die Möglichkeit der Authentifizierung von Usern an einer Windows2003 Domäne gelesen. Also User die mit ihrem Browser über Squid ins Internet gehen, werden anhande ihrer Windowskennung identifiziert. Das funktioniert via squid_ldap_auth. Das soll wohl ganz gut funktionieren. Aber es ist immer nur die Identifizierung an nur einer Domäne beschrieben.
Mein Problem ist nun ich habe mehrere W2003 Domänen, deren User meinen Squid nutzen. Diese Domänen haben keine Vertrauensbeziehungen untereinander und gehören nicht zu einem gemeinsamen Tree. Also z.B. erstedomänen.stadt.de, zweitedomäne.stadt.de ...

Hat jemand damit schon Erfahrung ? Müßte man die Authentifizierung mehrmals aufrufen ? Wenn ja wie ?


Vielen Dank

Jörg

Content-Key: 50601

Url: https://administrator.de/contentid/50601

Ausgedruckt am: 19.03.2024 um 14:03 Uhr

Mitglied: 6890
6890 03.02.2007 um 12:17:24 Uhr
Goto Top
hallo,

wir haben es zwar ein wenig anders gelöst, aber ich hätte da ein lösung für dich:
und zwar nimmst du statt squid_ldap_auth --> auth_param basic program /usr/local/bin/myldapscript.pl und in dieses schreibst du (in etwa, ungetestet) folgende zeilen:
#!/usr/bin/perl -w

use strict;
use Net::LDAP;
use Net::LDAP::Util;

my ($user,$pass) = split(" ",<>);  

my %Domains = ('erste.domain.de' => 'DOMAIN1',  
                            'zweite.domain.de' => 'DOMAIN2',  
                            'dritte.domain.de' => 'DOMAIN3', );  
my $ret;

foreach(keys(%Domain)) {
    $ret =&check($_,$Domain{$_},$user,$pass);
    exit(-1) unless $ret;
}
exit(1);

sub check {
   my ($ad_host,$ad_name,$user,$pass) = @_;
   my $ad = Net::LDAP->new($ad_host) || die "Cannot connect to $ad_host: $!";  
   my $mesg = $ad->bind("$ad_name\\".$login, password=>$pass);  
   # Bind not possible -> Login failed
   return(0) if $mesg->code;
   $ad->unbind;
   # Login successful
   return(1);
}
das script macht nix anderes als:
  • username und passwort von stdin lesen
  • dann jeden host und dessen domäne abfragen ob der user existiert
  • wenn ja zum nächsten host, wenn nein liefere -1 zurück (nicht authentifiziert)
  • wenn durch alle durch und ok liefere 1 (erfolgreich authentifiziert)

wenn fragen sind kannste ja noch mal bescheid sagen.
hoffe ich konnte helfen.

mfg godlike P
Mitglied: joergb
joergb 04.02.2007 um 20:58:52 Uhr
Goto Top
Oh , vielen Dank. Sieht doch doch ganz genial aus. Leider komme ich jetzt noch nicht dazu das Script zu testen, da ich nächste Woche nicht auf Arbeit bin.
Was müßte ich machen um auch noch die richtige Gruppenzugehörigkeit zu prüfen ?
Also alle die in Gruppe "Internet " sind haben Zugriff.
Hast Du Erfahrung wie lange eine solche Abfrage bei z.B 5 Domänen dauert ?


Vielen Dank

MfG

joergb