view Lib/IMPL/Security/Auth.pm @ 134:44977efed303

Significant performance optimizations Fixed recursion problems due converting objects to JSON Added cache support for the templates Added discovery feature for the web methods
author wizard
date Mon, 21 Jun 2010 02:39:53 +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