view Lib/IMPL/Security/Auth.pm @ 156:8638dd1374bf

Added template property to IMPL::Web::QueryHandler::PageFormat (this allows to specify exact template (filename, ref to a scalar, ref to a file handle)).
author wizard
date Tue, 05 Oct 2010 17:20:51 +0400
parents 6d3bca490556
children 4267a2ac3d46
line wrap: on
line source

package IMPL::Security::Auth;

use Digest::MD5 qw(md5_hex);

use constant {
	AUTH_SUCCESS => 1,
	AUTH_INCOMPLETE => 2,
	AUTH_FAIL => 3	
};

use base qw(Exporter);

our @EXPORT_OK = qw(&AUTH_SUCCESS &AUTH_INCOMPLETE &AUTH_FAIL &GenSSID);
our %EXPORT_TAGS = (Const => [qw(&AUTH_SUCCESS &AUTH_INCOMPLETE &AUTH_FAIL)]);

{
    my $i = 0;
    sub GenSSID() {
        return md5_hex(time,rand,$i++);
    }
}

sub DoAuth {
	die new IMPL::NotImplementedException;
}

sub ValidateSession {
	die new IMPL::NotImplementedException;
}

sub isTrusted {
	0;
}

sub Create {
	my ($self,%args) = @_;
	
	return $self->new($self->CreateSecData(%args));
}

1;

__END__

=pod

=head1 NAME

C<IMPL::Security::Auth> Базовыйы класс для пакетов аутентификации.

=head1 DESCRIPTION

C<[Abstract]>

Аутентификация носит итеративный характер, для чего создается объект аутентификации который
сохраняет состояние между итерациями.

Результатом аутентификации является сессия, состояние этой сессии также хранит объект
аутентификации.

В процессе авторизации клиент и сервер обмениеваются данными безопасности C<$challenge>.
И результатом каждой итерации является либо упех (C<AUTH_SUCCESS>), либо запрос на продолжение
(C<AUTH_INCOMPLETE>), либо неудача (C<AUTH_FAIL>). Количество итераций может быть разным,
зависит от пакета аутентификации.

=head1 EXPORT

=over

=item C<:Const>

Константы результата аутентификации

=over

=item C<AUTH_SUCCESS>

Успешная аутентификация

=item C<AUTH_INCOMPLETE>

Требуются дополнительные шаги

=item C<AUTH_FAIL>

Аутентификация неуспешна.

=back

=back

=head1 MEMBERS

=over

=item C<CTOR($SecData)>

Создает пакет для авторизации на основе данных безопасности для пользователя.
C<$SecData> - Зависит от пакета аутентификации.

=item C<[get] isTrusted>

Флаг того, что аутентификация закончена успешно.

=item C<DoAuth($challenge)>

Производит аутентификацию пользователя и инициализацию сессии,
возвращает результат аутентификации, в виде массива ($status,$challenge).

После успешной аутентификации пользователь получает данные C<$challenge>
для аутентификации сессии.

=item C<ValidateSession($challenge)>

Производит аутентификацию сессии, возвращает результат аутентификации,
в виде массива ($status,$challenge).

=item C<[static] CreateSecData(%args)>

Создает данные безопасности, на основе параметров. Параметры зависят от пакета аутентификации.

=item C<[static] Create(%args)>

Создает объект аутентификации, на основе параметров. Параметры зависят от пакета аутентификации.
Внутри вызывает метод C<CreateSecData(%args)>.

=item C<[static] SecDataArgs()>

Возвращает хеш с описанием параметров для функции C<CreateSecData>. Ключами являются
имена параметров, значениями - типы.

=back 

=cut