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