Авторизация в Active Directory с Perl.

| Нет комментариев | Нет трекбэков

При разработке практически любого более менее серьезного приложения для web всегда стоит задача аутентификации/авторизации пользователей вашего приложения. В большинстве случаев программист реализует свой собственный механизм доступа взаимодействуя c базой данных или используют базовую авторизацию с помощью web-сервера. Но если вы разрабатываете приложение для работы в сети Windows, которая как правило, в организациях более 10-15 компьютеров строится на Active Directory, то есть смысл использовать уже готовую базу данных для авторизации и аутентификации. Этой базой является каталог ActiveDirectory, который работает по стандартному протоколу LDAP

Я думаю вы и до этого видели множество продуктов интегрирующихся с AD в плане разграничения доступа. В этой статье я дам простейший пример того как вам интегрировать ваш скрипт с AD для контроля доступа (авторизации) к вашему приложению.

Итак, как я уже сказал - ActiveDirectory поддерживает стандартный протокол LPAD, а соответственно для взаимодействия с базой AD мы можем использовать стандартный модуль Perl (хотя он вроде не входит в стандартную поставку, но доступен на CPAN под разные платформы) Net::LDAP.

В интернете есть масса примеров по работе с данным модулем, но возможно нет самого простого примера - авторизация в AD. Хотя это очевидно следует из примеров которые вы обнаружите в сети, в некоторых случаях эта очевидность не так очевидна :)).

Итак -  основной метод модуля Net::LDAP, который нам потребуется -> bind.

Напишем простую функцию для проверки подлинности пользователя в AD:
...    
   7    sub auth_AD {
   8        my ($user, $pass) = @_;
   9        my $ad = Net::LDAP->new("domain.ru") or die "Could not connect! $!";
  10        my $mesg = $ad->bind("$user\@domain.ru", password=>$pass, version => 3 );
  11        return $mesg->is_error();
  12    }

...

Функция принимает два аргумента, и возвращает цифровой статус ошибки (0 - в случае успеха и положительные числа в случае ошибки).

Так же полезной информацией может быть применение следующих вызовов:

$mesg->error(); # краткое описание выполнения операции: (ex. Success)

$mesg->error_text(); # расширенное описание операции (ex. Operation completed without error)

Можете возвращать эти вывозы из функций или записывать их для дальнейшего использования.

Простейший алгоритм авторизации:

1. Запрос данных для AD

2. В случае успеха открываем сессию/ставим cookie, etc.

Успехов!

Нет трекбэков

URL для трекбэков: http://perlmonks.org.ru/cgi-bin/MT/engine/mt-tb.cgi/24

Комментировать

Об этой записи

Сообщение опубликовано 14.07.2009 22:12. Автор — Monks.

Предыдущая запись — Новая книга по Catalyst!

Следующая запись — Взлом PerlMonks.Org

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.

Страницы


 


 

Page copy protected against web site content infringement by Copyscape