Mercurial > pub > Impl
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 |