Автор Гілка: авторизація у squid  (Прочитано 4918 раз)

Відсутній RomadinR

  • Кореспондент
  • ***
  • дописів: 123
  • Карма: +0/-0
Re: авторизація у squid
« Відповідей #15 : 2007-02-10 00:23:40 »
Використовується СУБД Postgres.
У мене паролі в базі зараз зберігаються у нешифрованому вигляді.
my_auth.pl (Basic- авторизація):
#!/usr/bin/perl
use Pg;
my ($uname, $passwd);
my @row;
my $base = 'база_даних';
my $dbuser = 'логін_до_бази';
my $dbuserpwd = 'пароль_до_бази';
my $conn = Pg::setdbLogin('','','','',$base,$dbuser,$dbuserpwd);
$|=1;
while ($s = <>){
#Отримали від Squid логін і пароль (логін не може містити пробілів, бо логін і пароль розділяються пробілом при передачі від Squid до програми авторизації, пароль може містити пробіли)
    $i = index($s,' ');
    $uname = substr ($s,0,$i);
    chomp($passwd = substr ($s,$i+1));
    $query="select cpwd from users where login='$uname'";
    $result=$conn->exec($query);
    @row=$result->fetchrow;
    if ($passwd eq $row[0]) {
      print "OK\n";
    }else
    {print "ERR\n";
      };
};
my_auth_digest.pl :
#!/usr/bin/perl
use Pg;
use Digest::MD5;
my ($uname, $passwd);
my @row;
my $base = 'база_даних';
my $dbuser = 'логін_до_бази';
my $dbuserpwd = 'пароль_до_бази';
my $conn = Pg::setdbLogin('','','','',$base,$dbuser,$dbuserpwd);
$|=1;
while ($s = <>){
#Отримуємо від Squid username і realm
    chomp $s;
    my ($uname,$realm) = split /:/, $s;
    chop $uname; chop $realm;
    $uname=substr($uname,1);$realm=substr($realm,1);
    $query="select cpwd from users where login='$uname'";
    $result=$conn->exec($query);
    @row=$result->fetchrow;
    if ($row[0])  {
        $hha1 = Digest::MD5::md5_hex (join ':',$uname,$realm,$row[0]);
        print "$hha1\n";
    }else{print "ERR\n" };
};
Це, правда, трохи скорочені скрипти, я повикидав всякі додаткові перевірки (по групах користувачів, лімітах etc.), щоб було зрозуміло, як воно працює.

P.S. Логін і пароль не повинні містити символ ":", логін не повинен містити пробілів.
« Змінено: 2007-02-10 00:26:19 від RomadinR »

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: авторизація у squid
« Відповідей #16 : 2007-03-12 20:25:41 »
Перепрошую, чи хтось може детальніше пояснити, як підняти авторизацію в SQUID для локальних користувачів компа, на якому цей SQUID крутиться? Завдання просте: хочу з дому юзати свій робочий комп яко проксі, зараз собі виставляю доступ за IP, але ІР домашнього нету динамічний, тому хочу, щоб вводив свій логін і пароль від робочого компа.
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Praporshic

  • Гість
Re: авторизація у squid
« Відповідей #17 : 2007-03-13 08:04:31 »
Хм... робив таке десь півтора роки тому... достеменно пам'ятаю лише те, що документацію читав на squid.opennet.ru

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: авторизація у squid
« Відповідей #18 : 2007-03-13 16:45:44 »
хммм...ґуґл каже, що краще такого не робити, а натомість створити файл з паролями за допомогою htpaswd і дати сквіду цей файл з вживанням ncsa. Якщо я не помиляюсь, htpaswd вміє шифрувати des i md5. що йому краще дати? сквід обидва шифрування розуміє?
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: авторизація у squid
« Відповідей #19 : 2007-03-13 16:48:46 »
і ще питання: чи можна якось зробити блокування ІР, якщо пароль 3 рази неправильно введеш?
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Praporshic

  • Гість
Re: авторизація у squid
« Відповідей #20 : 2007-03-13 18:02:40 »
Стосовно блокування ІР - не впевнений бо не робив. А не робив бо не було потрібно. А що до методу шифрування, то я нічого не вказував - лише обов'язкові параметри. Працювало без проблем.