0
|
1 package Security::Auth::Simple;
|
|
2 use strict;
|
|
3 use Common;
|
|
4
|
|
5 our $Strict;
|
|
6
|
|
7 our @ISA = qw(Object);
|
|
8
|
|
9 sub Name {
|
|
10 return 'Simple';
|
|
11 }
|
|
12
|
|
13 sub ConstructAuthData {
|
|
14 my ($class,$SecData) = @_;
|
|
15 return new Security::Auth::Simple::AuthData(DataMD5 => $SecData);
|
|
16 }
|
|
17
|
|
18 sub NewAuthData {
|
|
19 my ($class,$SecData) = @_;
|
|
20 return new Security::Auth::Simple::AuthData(Data => $SecData);
|
|
21
|
|
22 }
|
|
23
|
|
24 package Security::Auth::Simple::AuthData;
|
|
25 use Common;
|
|
26 use Security;
|
|
27 use Security::Auth;
|
|
28 use Digest::MD5 qw(md5_hex);
|
|
29 our @ISA = qw(Object);
|
|
30
|
|
31 BEGIN {
|
|
32 DeclareProperty Data => ACCESS_READ;
|
|
33 DeclareProperty DataMD5 => ACCESS_READ;
|
|
34 }
|
|
35
|
|
36 sub CTOR {
|
|
37 my ($this,%args) = @_;
|
|
38
|
|
39 if ($args{'Data'}) {
|
|
40 $args{'DataMD5'}= $args{'Data'} ? md5_hex($args{'Data'}) : undef ;
|
|
41 $this->{$Data} = $args{'Data'};
|
|
42 }
|
|
43 $this->{$DataMD5} = $args{'DataMD5'};
|
|
44 }
|
|
45
|
|
46 sub DoAuth {
|
|
47 my ($this,$SecData) = @_;
|
|
48
|
|
49 if (not ($this->{$DataMD5} or $SecData) or $this->{$DataMD5} eq md5_hex($SecData)) {
|
|
50 if ($Strict) {
|
|
51 $this->{$Data} = Security::Auth::GenSSID;
|
|
52 $this->{$DataMD5} = md5_hex($this->{$Data});
|
|
53 } else {
|
|
54 $this->{$Data} = $SecData;
|
|
55 }
|
|
56 return Security::AUTH_SUCCESS;
|
|
57 } else {
|
|
58 return Security::AUTH_FAILED;
|
|
59 }
|
|
60 }
|
|
61
|
|
62 sub SessionAuthData {
|
|
63 my ($this) = @_;
|
|
64
|
|
65 return $this->{$DataMD5};
|
|
66 }
|
|
67
|
|
68 sub ClientAuthData {
|
|
69 my ($this) = @_;
|
|
70 return $this->{$Data};
|
|
71 }
|
|
72
|
|
73 1;
|