diff options
Diffstat (limited to 'OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs')
-rw-r--r-- | OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs index 6d9aae3..d02ff9b 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs | |||
@@ -31,6 +31,9 @@ using OpenSim.Services.Interfaces; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using OpenSim.Data; | ||
35 | using OpenSim.Framework; | ||
36 | using OpenSim.Framework.Console; | ||
34 | 37 | ||
35 | namespace OpenSim.Services.AuthenticationService | 38 | namespace OpenSim.Services.AuthenticationService |
36 | { | 39 | { |
@@ -43,9 +46,9 @@ namespace OpenSim.Services.AuthenticationService | |||
43 | public class WebkeyAuthenticationService : | 46 | public class WebkeyAuthenticationService : |
44 | AuthenticationServiceBase, IAuthenticationService | 47 | AuthenticationServiceBase, IAuthenticationService |
45 | { | 48 | { |
46 | // private static readonly ILog m_log = | 49 | private static readonly ILog m_log = |
47 | // LogManager.GetLogger( | 50 | LogManager.GetLogger( |
48 | // MethodBase.GetCurrentMethod().DeclaringType); | 51 | MethodBase.GetCurrentMethod().DeclaringType); |
49 | 52 | ||
50 | public WebkeyAuthenticationService(IConfigSource config, IUserAccountService userService) : | 53 | public WebkeyAuthenticationService(IConfigSource config, IUserAccountService userService) : |
51 | base(config, userService) | 54 | base(config, userService) |
@@ -53,12 +56,40 @@ namespace OpenSim.Services.AuthenticationService | |||
53 | } | 56 | } |
54 | 57 | ||
55 | public WebkeyAuthenticationService(IConfigSource config) : | 58 | public WebkeyAuthenticationService(IConfigSource config) : |
56 | base(config) | 59 | base(config) |
57 | { | 60 | { |
58 | } | 61 | } |
59 | 62 | ||
60 | public string Authenticate(UUID principalID, string password, int lifetime) | 63 | public string Authenticate(UUID principalID, string password, int lifetime) |
61 | { | 64 | { |
65 | if (new UUID(password) == UUID.Zero) | ||
66 | { | ||
67 | m_log.DebugFormat("[AUTH SERVICE]: UUID.Zero is not a valid web_login_key on PrincipalID {0}", principalID); | ||
68 | } | ||
69 | else | ||
70 | { | ||
71 | AuthenticationData data = m_Database.Get(principalID); | ||
72 | if (data != null && data.Data != null) | ||
73 | { | ||
74 | if (data.Data.ContainsKey("webLoginKey")) | ||
75 | { | ||
76 | string key = data.Data["webLoginKey"].ToString(); | ||
77 | if (key == password) | ||
78 | { | ||
79 | data.Data["webLoginKey"] = UUID.Zero.ToString(); | ||
80 | m_Database.Store(data); | ||
81 | return GetToken(principalID, lifetime); | ||
82 | } | ||
83 | else | ||
84 | { | ||
85 | m_log.DebugFormat("[AUTH SERVICE]: web login auth failed, got PrincipalID {0} gave {1} instead of {2}", principalID, password, key); | ||
86 | } | ||
87 | }else{ | ||
88 | m_log.DebugFormat("[AUTH SERVICE]: no col webLoginKey in passwd.db"); | ||
89 | } | ||
90 | } | ||
91 | m_log.DebugFormat("[AUTH SERVICE]: PrincipalID {0} or its data not found", principalID); | ||
92 | } | ||
62 | return String.Empty; | 93 | return String.Empty; |
63 | } | 94 | } |
64 | } | 95 | } |