diff lib/IMPL/Security/Auth.pm @ 407:c6e90e02dd17 ref20150831

renamed Lib->lib
author cin
date Fri, 04 Sep 2015 19:40:23 +0300
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/IMPL/Security/Auth.pm	Fri Sep 04 19:40:23 2015 +0300
@@ -0,0 +1,132 @@
+package IMPL::Security::Auth;
+use strict;
+
+use Digest::MD5 qw(md5_hex);
+
+use constant {
+    AUTH_SUCCESS => 1,
+    AUTH_INCOMPLETE => 2,
+    AUTH_FAIL => 3    
+};
+
+use parent 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 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<[static] CreateSecData(%args)>
+
+Создает данные безопасности, на основе параметров. Параметры зависят от пакета
+аутентификации. Возвращает строку с данными безопасности.
+
+=item C<[static] Create(%args)>
+
+Создает объект аутентификации, на основе параметров. Параметры зависят от
+пакета аутентификации. Внутри вызывает метод C<CreateSecData(%args)>.
+
+=item C<[static] SecDataArgs()>
+
+Возвращает хеш с описанием параметров для функции C<CreateSecData>.
+Ключами являются имена параметров, значениями - типы.
+
+=back 
+
+=cut