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

renamed Lib->lib
author cin
date Fri, 04 Sep 2015 19:40:23 +0300
parents
children
comparison
equal deleted inserted replaced
406:f23fcb19d3c1 407:c6e90e02dd17
1 package IMPL::Security::Auth;
2 use strict;
3
4 use Digest::MD5 qw(md5_hex);
5
6 use constant {
7 AUTH_SUCCESS => 1,
8 AUTH_INCOMPLETE => 2,
9 AUTH_FAIL => 3
10 };
11
12 use parent qw(Exporter);
13
14 our @EXPORT_OK = qw(&AUTH_SUCCESS &AUTH_INCOMPLETE &AUTH_FAIL &GenSSID);
15 our %EXPORT_TAGS = (Const => [qw(&AUTH_SUCCESS &AUTH_INCOMPLETE &AUTH_FAIL)]);
16
17 {
18 my $i = 0;
19 sub GenSSID {
20 return md5_hex(time,rand,$i++);
21 }
22 }
23
24 sub DoAuth {
25 die new IMPL::NotImplementedException;
26 }
27
28 sub isTrusted {
29 0;
30 }
31
32 sub Create {
33 my ($self,%args) = @_;
34
35 return $self->new($self->CreateSecData(%args));
36 }
37
38 1;
39
40 __END__
41
42 =pod
43
44 =head1 NAME
45
46 C<IMPL::Security::Auth> Базовыйы класс для объектов аутентификации.
47
48 =head1 DESCRIPTION
49
50 C<[Abstract]>
51
52 Объект аутентификации служет для аутентификации клиента, в случае успеха
53 образуется сессия идентифицирующая клиента, которая представлена на стороне
54 сервера объектом аутентификации.
55
56 Аутентификация носит итеративный характер, объект аутентификации сохраняет
57 состояние между итерациями.
58
59 Результатом аутентификации является сессия, состояние этой сессии также хранит объект
60 аутентификации.
61
62 В процессе авторизации клиент и сервер обмениеваются данными безопасности C<$challenge>.
63 И результатом каждой итерации является либо упех (C<AUTH_SUCCESS>), либо запрос на продолжение
64 (C<AUTH_INCOMPLETE>), либо неудача (C<AUTH_FAIL>). Количество итераций может быть разным,
65 зависит от пакета аутентификации.
66
67 =head1 EXPORT
68
69 =over
70
71 =item C<:Const>
72
73 Константы результата аутентификации
74
75 =over
76
77 =item C<AUTH_SUCCESS>
78
79 Успешная аутентификация
80
81 =item C<AUTH_INCOMPLETE>
82
83 Требуются дополнительные шаги
84
85 =item C<AUTH_FAIL>
86
87 Аутентификация неуспешна.
88
89 =back
90
91 =back
92
93 =head1 MEMBERS
94
95 =over
96
97 =item C<CTOR($SecData)>
98
99 Создает пакет для авторизации на основе данных безопасности для пользователя.
100 C<$SecData> - Зависит от пакета аутентификации.
101
102 =item C<[get] isTrusted>
103
104 Флаг того, что аутентификация закончена успешно и сессия создана. Данный объект
105 может быть создан для аутентификации сессии.
106
107 =item C<DoAuth($challenge)>
108
109 Производит аутентификацию пользователя, возвращает результат
110 аутентификации, в виде массива ($status,$challenge).
111
112 Даже после успешной аутентификации полученные данные C<$challenge> должны быть
113 отправлены клиенту для завершения аутентификации на стороне клиента.
114
115 =item C<[static] CreateSecData(%args)>
116
117 Создает данные безопасности, на основе параметров. Параметры зависят от пакета
118 аутентификации. Возвращает строку с данными безопасности.
119
120 =item C<[static] Create(%args)>
121
122 Создает объект аутентификации, на основе параметров. Параметры зависят от
123 пакета аутентификации. Внутри вызывает метод C<CreateSecData(%args)>.
124
125 =item C<[static] SecDataArgs()>
126
127 Возвращает хеш с описанием параметров для функции C<CreateSecData>.
128 Ключами являются имена параметров, значениями - типы.
129
130 =back
131
132 =cut