view Lib/IMPL/Security/Auth/Simple.pm @ 73:2f31ecabe9ea

doc security
author wizard
date Mon, 29 Mar 2010 06:56:05 +0400
parents eac47fa4f262
children 077357224bec
line wrap: on
line source

package IMPL::Security::Auth::Simple;
use strict;

use base qw(IMPL::Security::Auth);
use Digest::MD5;

use IMPL::Class::Property;

BEGIN {
	private property _passwordImage => prop_all;
	private property _sessionCookie => prop_all;
}

sub CTOR {
	my ($this,$secData) = @_;
	
	$this->_passwordImage($secData);
}

sub DoAuth {
	my ($this,$challenge) = @_;

	if (Digest::MD5::md5_hex($challenge) eq $this->_passwordImage) {
		return (AUTH_SUCCESS,$this->_sessionCookie($this->GenSSID));
	} elsee {
		return (AUTH_FAIL,undef);
	}
}

sub ValidateSession {
	my ($this,$cookie) = @_;
	
	if ($cookie eq $this->_sessionCookie) {
		return (AUTH_SUCCESS,undef);
	} else {
		return (AUTH_FAIL,undef);
	}
}

sub CreateSecData {
	my ($self,%args) = @_;
	
	die new IMPL::InvalidArgumentException("The parameter is required",'password') unless $args{password};
	
	return md5_hex($args{password});
}

sub SecDataArgs {
	password => 'SCALAR'		
}

1;

__END__

=pod

=head1 NAME

C<IMPL::Security::Auth::Simple> Модуль простой авторизации.

=head1 DESCRIPTION

Использует алгоритм MD5 для хранения образа пароля.

=head1 MEMBERS

=over

=item C<DoAuth($challenge)>

Аутентифицирует пользователя. Используется один этап. C<$challenge>
открытый пароль пользователя.

Возвращает C<($status,$challenge)>

=over

=item C<$status>

Результат либо C<AUTH_SUCCESS>, либо C<AUTH_FAIL>

=item C<$challenge>

В случае успеха возвращает cookie (уникальный номер) сессии

=back

=item C<ValidateSession($challenge)>

Проверяет аутентичность сессии. Использует один этап. C<$challenge> cookie
сессии, полученный при выполнении метода C<DoAuth>.

Возвращает C<($status,$challenge)>

=over

=item C<$status>

Результат либо C<AUTH_SUCCESS>, либо C<AUTH_FAIL>

=item C<$challenge>

Всегда C<undef>

=back

=back

=cut