Mercurial > pub > Impl
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 открытый пароль пользователя. |