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 |
