LINUX.ORG.RU

apache mod_perl нужна помощь

 ,


0

1

Добрый день.

Необходимо настроить авторизацию с помощью Apache. Есть необходимость настройки таким образом, что бы имя пользователя принималось в формате: domain\user в текущем случае работает только без указания доменного суфикса. Perl Почему-то не обрабатывает логин что бы привести его к виду, приемлемому для авторизации в Апаче.

Помогите пожалуйста. Конфиг апача:

PerlModule ModPerl::Auth
<Location /test>
SetHandler perl-script
PerlHandler ModPerl::Auth
Order deny,allow
Allow from all
AuthName example
AuthType basic
AuthBasicProvider ldap
AuthLDAPUrl ldap://dc.example.com:389/dc=example,dc=com?sAMAccountName?sub?(objectClass=*)
AuthLDAPBindDN testuser@example.com
AuthLDAPBindPassword "Password"
Require valid-user
</Location>
Конфиг ModPerl::Auth:

 package ModPerl::Auth;
  use Apache::Constants qw(:common);
  sub handler
{
my $r = shift;
my $c = $r->connection;

my $auth_header = $r->headers_in->get('Authorization') || '';
my $credentials = (split / /, $auth_header)[-1] || '';
my ($username,$password) = split /:/,MIME::Base64::decode($credentials),
2;

if (defined($username) && ( $username =~ /^([A-Za-z]+\\)/))
{
my @usr_parts = (split /\\/,$username);
$username = lc($usr_parts[1]);
}
return DECLINED unless $username;
$credentials = MIME::Base64::encode(join(':',$username,$password));
$r->headers_in->set(Authorization =>"Basic $credentials");
#Procced to login to the system.
return OK;
}
1;



Последнее исправление: mellon (всего исправлений: 5)

нужна помощ
С указанием perl не пропрабатывает логин

вот помощ вам и окажут. с полным пропрабатыванием пёрл.

mos ★★☆☆☆
()

PerlHandler ModPerl::Auth

Может быть дело в том, что твой ModPerl::Auth выполняется после апачевской авторизации? Попробуй использовать другой handler (может быть PerlAuthenHandler) Я так понимаю у тебя mod_perl1 (это печально) https://perl.apache.org/docs/1.0/guide/config.html#Perl_Handlers

Посмотри как сделано тут http://search.cpan.org/~chansen/Authen-Simple-LDAP-0.3/lib/Authen/Simple/LDAP.pm

pru-mike ★★
()
Ответ на: комментарий от pru-mike

Я использую mod_perl2, пробовал разные handler, в том числе, что указали вы. Возможно, проблема в алгоритме установки модуля. Я в этом новичок, все делал по гайдам.

mellon
() автор топика
Ответ на: комментарий от mellon

Я использую mod_perl2

чё-то не похоже

PerlHandler

это название из mod_perl1, в mod_perl2 он называется PerlResponseHandler

Apache::Constants

Это модуль из mod_perl1, в mod_perl2 переименовали в Apache2::Const

pru-mike ★★
()
Ответ на: комментарий от pru-mike

perl -Mmod_perl2\ 999 mod_perl2 version 999 required--this is only version 2.000009.

find / -name Constants.pm
/usr/lib64/perl5/Apache/Constants.pm
/usr/lib64/perl5/ModPerl/Constants.pm
/usr/lib64/perl5/Constants.pm
/usr/share/perl5/vendor_perl/ExtUtils/ParseXS/Constants.pm

По этому Apache::Constants

mellon
() автор топика
Ответ на: комментарий от mellon

Если Handler-ом выступает PerlAuthenHandler - ошибка:

AH00027: No authentication done but request not allowed without authentication for /test. Authentication not configured? 

Нет необходимости авторизировать пользователя с помощью mod_perl. Нужно как-то модифицировать логин при передаче его на Apache.

Может есть еще идеи?

mellon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.