RE: aurtorizace uživatele ve squidu - nefunkčnost v IE 7

ipetr na email.cz ipetr na email.cz
Pátek Říjen 26 20:23:05 CEST 2007


Autorizace na přihlášeného uživatele mi nevyhovuje, na těch PC na kterých se
tato autorizace používá pracuje skoro 60-sat uživatelů, kteří se různě
střídají. Proto ta autorizace až při přístupu na www mimo intranet. Stačí se
přihlásit pouze jednou, a do doby než uživatel zavře všechna okna brouseru
se spojení drží. Jak jsem psal, na všech brouserech krom IE7 mi to funguje.
  

Používám ve squidu tuto část auth_param

V této konfiguraci
auth_param basic children 5
auth_param basic realm Squid proxy-caching. Zadejte uzivatelske jmeno a
heslo
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
auth_param basic program /usr/sbin/ncsa_auth /etc/squid/squid.passwd
auth_param digest program /usr/sbin/ncsa_auth /etc/squid/squid.passwd


IPetr
 


> 
> > Používám squid autorizaci uživatele pro přístup na net. V
> ...
> O jakou autorizaci (nebo spis autentikaci) se jedna ? Je to 
> ntlm_auth ?
> S tim bohuzel neporadim, mam ale jiny tip - vykaslat se na 
> autentikaci proverovanim jmeno/heslo a pouzit pouze informaci 
> o prave prihlasenem uzivateli Windouz, podobne jako muse byt 
> pouzita sluzba ident na jinych operacnich systemech. 
> K tomu jsem pouzil dotaz na jmena registrovana na jeho Wind. 
> stanici. Pokud tam totiz bezi sluzba Messenger (v XP cesky 
> Kuryrni sluzba), pripadne to jsou jeste Win9x, vraci stanice 
> mezi jmeny take username<03>. Napsal jsem si jednoduchy Perl 
> skriptik, ktery se pak vola ze Squidu jako external_acl_type.
> Tady je:
> 
> ====
> #!/usr/bin/perl
> 
> use Socket;
> use IO::Handle;
> 
> STDOUT->autoflush(1);
> main:
> while (<>) {
>   chomp;
>   $ip=$_;
>   $trnid=int(rand(65536));
>   $query=" CK".("A"x30)."\0";
>   $data=pack("nnnnnna34nn",$trnid,0,1,0,0,0,$query,0x21,1);
>   close(S);
>   socket(S, PF_INET, SOCK_DGRAM, getprotobyname("udp")) or 
> die "socket: $!";
>   $ipaddr=inet_aton($ip);
>   $portaddr=sockaddr_in(137,$ipaddr);
>   send(S,$data,0,$portaddr)==length($data) or die "send";
>   vec($mask,fileno(S),1)=1;
>   unless (select($mask,undef,undef,0.1)) {
>     print "ERR\n";
>     next;
>   }
>   $portaddr=recv(S,$buf,1500,0) or die "recv";
>   ($id,$flg,$q,$ans,$aut,$add,$datar,$type,$class,$ttl,$len,$n,$buf)=
>     unpack("nnnnnna34nnNnCa*",$buf);
>   @names=();
>   for ($i=0;$i<$n;$i++) {
>     ($name,$type,$flags,$buf)=unpack("a15Cna*",$buf);
>     next if ($flags&0x8000 or ($type!=0 and $type!=3));
>     $name=~s/ +$//;
>     $name=lc($name);
>     if ($type==3) {
>       push @names,$name;
>     } else {
>       $wkst=$name;
>     }
>   }
>   if ($#names<=1) {
>     while ($name=pop @names) {
>       next if ($name eq $wkst);
>       print "OK user=$name\n";
>       next main;
>     }
>   }
>   print "ERR\n";
> }
> ====
> 
> Vracene jmeno uzivatele se pak da ve Squidu pouzit stejne 
> jako jmeno prihlaseneho uzivatele nebo jmeno ziskane pomoci 
> sluzby ident (tcp 113), kterou Win systemy nemaji.
> 
> M. Vancl




Další informace o konferenci Linux