comparison Lib/IMPL/Security/Auth/Simple.pm @ 81:077357224bec

IMPL::Web::Security alpha version IMPL::Security improovements
author Sergey
date Wed, 07 Apr 2010 14:45:34 +0400
parents 2f31ecabe9ea
children 6d3bca490556
comparison
equal deleted inserted replaced
80:f017c0d7527c 81:077357224bec
1 package IMPL::Security::Auth::Simple; 1 package IMPL::Security::Auth::Simple;
2 use strict; 2 use strict;
3 3
4 use base qw(IMPL::Security::Auth); 4 use base qw(IMPL::Object IMPL::Security::Auth);
5 use Digest::MD5; 5 use Digest::MD5;
6 6
7 use IMPL::Class::Property; 7 use IMPL::Class::Property;
8 use IMPL::Security::Auth qw(:Const);
8 9
9 BEGIN { 10 BEGIN {
10 private property _passwordImage => prop_all; 11 private property _passwordImage => prop_all;
11 private property _sessionCookie => prop_all; 12 private property _sessionCookie => prop_all;
12 } 13 }
13 14
14 sub CTOR { 15 sub CTOR {
15 my ($this,$secData) = @_; 16 my ($this,$secData) = @_;
16 17
17 $this->_passwordImage($secData); 18 my ($passImg,$cookie) = split /|/,$secData;
19
20 $this->_passwordImage($passImg);
21 $this->_sessionCookie($cookie);
22 }
23
24 sub secData {
25 my ($this) = @_;
26
27 if ($this->_sessionCookie) {
28 return join ('|',$this->_passwordImage, $this->_sessionCookie );
29 } else {
30 return $this->_passwordImage;
31 }
32 }
33
34 sub isTrusted {
35 my ($this) = @_;
36
37 $this->_sessionCookie ? 1 : 0;
18 } 38 }
19 39
20 sub DoAuth { 40 sub DoAuth {
21 my ($this,$challenge) = @_; 41 my ($this,$challenge) = @_;
22 42
23 if (Digest::MD5::md5_hex($challenge) eq $this->_passwordImage) { 43 if (Digest::MD5::md5_hex($challenge) eq $this->_passwordImage) {
24 return (AUTH_SUCCESS,$this->_sessionCookie($this->GenSSID)); 44 return (AUTH_SUCCESS,$this->_sessionCookie($this->GenSSID));
25 } elsee { 45 } elsee {
26 return (AUTH_FAIL,undef); 46 return (AUTH_FAIL,$this->_sessionCookie(undef));
27 } 47 }
28 } 48 }
29 49
30 sub ValidateSession { 50 sub ValidateSession {
31 my ($this,$cookie) = @_; 51 my ($this,$cookie) = @_;
52
53 die new IMPL::InvalidOperationException("The context is untrusted") unless $this->_sessionCookie;
32 54
33 if ($cookie eq $this->_sessionCookie) { 55 if ($cookie eq $this->_sessionCookie) {
34 return (AUTH_SUCCESS,undef); 56 return (AUTH_SUCCESS,undef);
35 } else { 57 } else {
36 return (AUTH_FAIL,undef); 58 return (AUTH_FAIL,undef);
64 Использует алгоритм MD5 для хранения образа пароля. 86 Использует алгоритм MD5 для хранения образа пароля.
65 87
66 =head1 MEMBERS 88 =head1 MEMBERS
67 89
68 =over 90 =over
91
92 =item C<CTOR($secData)>
93
94 Создает объект аутентификации, передавая ему данные для инициализации.
95
96 =item C<[get]secData>
97
98 Возвращает данные безопасности, которые можно использовать для восстановления
99 состояния объекта.
100
101 =item C<[get]isTrusted>
102
103 Является ли объект доверенным для аутентификации сессии (тоесть хранит данные
104 для аутентификации сессии).
69 105
70 =item C<DoAuth($challenge)> 106 =item C<DoAuth($challenge)>
71 107
72 Аутентифицирует пользователя. Используется один этап. C<$challenge> 108 Аутентифицирует пользователя. Используется один этап. C<$challenge>
73 открытый пароль пользователя. 109 открытый пароль пользователя.