| 
51
 | 
     1 package IMPL::Security::Auth;
 | 
| 
 | 
     2 
 | 
| 
52
 | 
     3 use Digest::MD5 qw(md5_hex);
 | 
| 
 | 
     4 
 | 
| 
51
 | 
     5 use constant {
 | 
| 
52
 | 
     6 	AUTH_SUCCESS => 1,
 | 
| 
 | 
     7 	AUTH_INCOMPLETE => 2,
 | 
| 
 | 
     8 	AUT_FAIL => 3	
 | 
| 
51
 | 
     9 };
 | 
| 
 | 
    10 
 | 
| 
 | 
    11 use base qw(Exporter);
 | 
| 
 | 
    12 
 | 
| 
52
 | 
    13 our @EXPORT_OK = qw(&AUTH_SUCCESS &AUTH_INCOMPLETE &AUTH_FAIL &GenSSID);
 | 
| 
 | 
    14 our %EXPORT_TAGS = (Const => [qw(&AUTH_SUCCESS &AUTH_INCOMPLETE &AUTH_FAIL)]);
 | 
| 
 | 
    15 
 | 
| 
 | 
    16 {
 | 
| 
 | 
    17     my $i = 0;
 | 
| 
 | 
    18     sub GenSSID() {
 | 
| 
 | 
    19         return md5_hex(time,rand,$i++);
 | 
| 
 | 
    20     }
 | 
| 
 | 
    21 }
 | 
| 
51
 | 
    22 
 | 
| 
69
 | 
    23 sub DoAuth {
 | 
| 
 | 
    24 	die new IMPL::NotImplementedException;
 | 
| 
 | 
    25 }
 | 
| 
 | 
    26 
 | 
| 
 | 
    27 sub ValidateSession {
 | 
| 
 | 
    28 	die new IMPL::NotImplementedException;
 | 
| 
 | 
    29 }
 | 
| 
 | 
    30 
 | 
| 
51
 | 
    31 1;
 | 
| 
 | 
    32 
 | 
| 
 | 
    33 __END__
 | 
| 
 | 
    34 
 | 
| 
 | 
    35 =pod
 | 
| 
 | 
    36 
 | 
| 
71
 | 
    37 =head1 NAME
 | 
| 
51
 | 
    38 
 | 
| 
71
 | 
    39 C<IMPL::Security::Auth> Базовыйы класс для пакетов аутентификации.
 | 
| 
 | 
    40 
 | 
| 
 | 
    41 =head1 DESCRIPTION
 | 
| 
51
 | 
    42 
 | 
| 
70
 | 
    43 Аутентификация носит итеративный характер, для чего создается объект аутентификации который
 | 
| 
 | 
    44 сохраняет состояние между итерациями.
 | 
| 
51
 | 
    45 
 | 
| 
70
 | 
    46 Результатом аутентификации является сессия, состояние этой сессии также хранит объект
 | 
| 
 | 
    47 аутентификации.
 | 
| 
 | 
    48 
 | 
| 
 | 
    49 В процессе авторизации клиент и сервер обмениеваются данными безопасности C<$challenge>.
 | 
| 
 | 
    50 И результатом каждой итерации является либо упех (C<AUTH_SUCCESS>), либо запрос на продолжение
 | 
| 
 | 
    51 (C<AUTH_INCOMPLETE>), либо неудача (C<AUTH_FAIL>). Количество итераций может быть разным,
 | 
| 
 | 
    52 зависит от пакета аутентификации.
 | 
| 
52
 | 
    53 
 | 
| 
71
 | 
    54 =head1 EXPORT
 | 
| 
 | 
    55 
 | 
| 
 | 
    56 =over
 | 
| 
 | 
    57 
 | 
| 
 | 
    58 =item C<:Const>
 | 
| 
 | 
    59 
 | 
| 
 | 
    60 Константы результата аутентификации
 | 
| 
 | 
    61 
 | 
| 
 | 
    62 =over
 | 
| 
 | 
    63 
 | 
| 
 | 
    64 =item C<AUTH_SUCCESS>
 | 
| 
 | 
    65 
 | 
| 
 | 
    66 Успешная аутентификация
 | 
| 
 | 
    67 
 | 
| 
 | 
    68 =item C<AUTH_INCOMPLETE>
 | 
| 
 | 
    69 
 | 
| 
 | 
    70 Требуются дополнительные шаги
 | 
| 
 | 
    71 
 | 
| 
72
 | 
    72 =item C<AUTH_FAIL>
 | 
| 
71
 | 
    73 
 | 
| 
 | 
    74 Аутентификация неуспешна.
 | 
| 
 | 
    75 
 | 
| 
 | 
    76 =back
 | 
| 
 | 
    77 
 | 
| 
 | 
    78 =back
 | 
| 
 | 
    79 
 | 
| 
 | 
    80 =head1 MEMBERS
 | 
| 
 | 
    81 
 | 
| 
52
 | 
    82 =over
 | 
| 
 | 
    83 
 | 
| 
 | 
    84 =item C<CTOR($SecData)>
 | 
| 
 | 
    85 
 | 
| 
71
 | 
    86 Создает пакет для авторизации на основе данных безопасности для пользователя.
 | 
| 
 | 
    87 C<$SecData> - Зависит от пакета аутентификации.
 | 
| 
 | 
    88 
 | 
| 
 | 
    89 =item C<DoAuth($Challenge)>
 | 
| 
52
 | 
    90 
 | 
| 
71
 | 
    91 Производит аутентификацию пользователя и инициализацию сессии,
 | 
| 
 | 
    92 возвращает результат аутентификации, в виде массива ($status,$challenge).
 | 
| 
 | 
    93 
 | 
| 
 | 
    94 =item C<ValidateSession($Challenge)>
 | 
| 
52
 | 
    95 
 | 
| 
71
 | 
    96 Производит аутентификацию сессии, возвращает результат аутентификации,
 | 
| 
 | 
    97 в виде массива ($status,$challenge).
 | 
| 
 | 
    98 
 | 
| 
 | 
    99 =item C<[static] CreateSecData(%args)>
 | 
| 
52
 | 
   100 
 | 
| 
71
 | 
   101 Создает данные безопасности, на основе параметров. Параметры зависят от пакета аутентификации.
 | 
| 
52
 | 
   102 
 | 
| 
71
 | 
   103 =item C<[static] SecDataArgs()>
 | 
| 
 | 
   104 
 | 
| 
 | 
   105 Возвращает хеш с описанием параметров для функции C<CreateSecData>. Ключами являются
 | 
| 
 | 
   106 имена параметров, значениями - типы. 
 | 
| 
52
 | 
   107 
 | 
| 
51
 | 
   108 =cut |