aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Authentication/LocalAuthenticationServiceConnector.cs11
-rw-r--r--OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs74
-rw-r--r--OpenSim/Server/Handlers/UserAccounts/UserAccountServerPostHandler.cs2
-rw-r--r--OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs47
-rw-r--r--OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs12
-rw-r--r--OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs10
-rw-r--r--OpenSim/Services/Interfaces/IAuthenticationService.cs26
7 files changed, 177 insertions, 5 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authentication/LocalAuthenticationServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authentication/LocalAuthenticationServiceConnector.cs
index acc362b..9484a5a 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authentication/LocalAuthenticationServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authentication/LocalAuthenticationServiceConnector.cs
@@ -158,7 +158,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authentication
158 return m_AuthenticationService.SetPassword(principalID, passwd); 158 return m_AuthenticationService.SetPassword(principalID, passwd);
159 } 159 }
160 160
161 #endregion 161 public AuthInfo GetAuthInfo(UUID principalID)
162 {
163 return m_AuthenticationService.GetAuthInfo(principalID);
164 }
162 165
166 public bool SetAuthInfo(AuthInfo info)
167 {
168 return m_AuthenticationService.SetAuthInfo(info);
169 }
170
171 #endregion
163 } 172 }
164} 173}
diff --git a/OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs b/OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs
index ae71945..4d1b0ff 100644
--- a/OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs
+++ b/OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs
@@ -46,9 +46,12 @@ namespace OpenSim.Server.Handlers.Authentication
46{ 46{
47 public class AuthenticationServerPostHandler : BaseStreamHandler 47 public class AuthenticationServerPostHandler : BaseStreamHandler
48 { 48 {
49 // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 49 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
50 50
51 private IAuthenticationService m_AuthenticationService; 51 private IAuthenticationService m_AuthenticationService;
52
53 private bool m_AllowGetAuthInfo = false;
54 private bool m_AllowSetAuthInfo = false;
52 private bool m_AllowSetPassword = false; 55 private bool m_AllowSetPassword = false;
53 56
54 public AuthenticationServerPostHandler(IAuthenticationService service) : 57 public AuthenticationServerPostHandler(IAuthenticationService service) :
@@ -61,6 +64,8 @@ namespace OpenSim.Server.Handlers.Authentication
61 64
62 if (config != null) 65 if (config != null)
63 { 66 {
67 m_AllowGetAuthInfo = config.GetBoolean("AllowGetAuthInfo", m_AllowGetAuthInfo);
68 m_AllowSetAuthInfo = config.GetBoolean("AllowSetAuthInfo", m_AllowSetAuthInfo);
64 m_AllowSetPassword = config.GetBoolean("AllowSetPassword", m_AllowSetPassword); 69 m_AllowSetPassword = config.GetBoolean("AllowSetPassword", m_AllowSetPassword);
65 } 70 }
66 } 71 }
@@ -161,6 +166,18 @@ namespace OpenSim.Server.Handlers.Authentication
161 return SuccessResult(); 166 return SuccessResult();
162 167
163 return FailureResult(); 168 return FailureResult();
169
170 case "getauthinfo":
171 if (m_AllowGetAuthInfo)
172 return GetAuthInfo(principalID);
173
174 break;
175
176 case "setauthinfo":
177 if (m_AllowSetAuthInfo)
178 return SetAuthInfo(principalID, request);
179
180 break;
164 } 181 }
165 182
166 return FailureResult(); 183 return FailureResult();
@@ -193,6 +210,54 @@ namespace OpenSim.Server.Handlers.Authentication
193 return DocToBytes(doc); 210 return DocToBytes(doc);
194 } 211 }
195 212
213 byte[] GetAuthInfo(UUID principalID)
214 {
215 AuthInfo info = m_AuthenticationService.GetAuthInfo(principalID);
216
217 if (info != null)
218 {
219 Dictionary<string, object> result = new Dictionary<string, object>();
220 result["result"] = info.ToKeyValuePairs();
221
222 return ResultToBytes(result);
223 }
224 else
225 {
226 return FailureResult();
227 }
228 }
229
230 byte[] SetAuthInfo(UUID principalID, Dictionary<string, object> request)
231 {
232 AuthInfo existingInfo = m_AuthenticationService.GetAuthInfo(principalID);
233
234 if (existingInfo == null)
235 return FailureResult();
236
237 if (request.ContainsKey("AccountType"))
238 existingInfo.AccountType = request["AccountType"].ToString();
239
240 if (request.ContainsKey("PasswordHash"))
241 existingInfo.PasswordHash = request["PasswordHash"].ToString();
242
243 if (request.ContainsKey("PasswordSalt"))
244 existingInfo.PasswordSalt = request["PasswordSalt"].ToString();
245
246 if (request.ContainsKey("WebLoginKey"))
247 existingInfo.WebLoginKey = request["WebLoginKey"].ToString();
248
249 if (!m_AuthenticationService.SetAuthInfo(existingInfo))
250 {
251 m_log.ErrorFormat(
252 "[AUTHENTICATION SERVER POST HANDLER]: Authentication info store failed for account {0} {1} {2}",
253 existingInfo.PrincipalID);
254
255 return FailureResult();
256 }
257
258 return SuccessResult();
259 }
260
196 private byte[] FailureResult() 261 private byte[] FailureResult()
197 { 262 {
198 XmlDocument doc = new XmlDocument(); 263 XmlDocument doc = new XmlDocument();
@@ -252,5 +317,12 @@ namespace OpenSim.Server.Handlers.Authentication
252 317
253 return ms.GetBuffer(); 318 return ms.GetBuffer();
254 } 319 }
320
321 private byte[] ResultToBytes(Dictionary<string, object> result)
322 {
323 string xmlString = ServerUtils.BuildXmlResponse(result);
324 UTF8Encoding encoding = new UTF8Encoding();
325 return encoding.GetBytes(xmlString);
326 }
255 } 327 }
256} 328}
diff --git a/OpenSim/Server/Handlers/UserAccounts/UserAccountServerPostHandler.cs b/OpenSim/Server/Handlers/UserAccounts/UserAccountServerPostHandler.cs
index f987383..5ab4caf 100644
--- a/OpenSim/Server/Handlers/UserAccounts/UserAccountServerPostHandler.cs
+++ b/OpenSim/Server/Handlers/UserAccounts/UserAccountServerPostHandler.cs
@@ -356,7 +356,5 @@ namespace OpenSim.Server.Handlers.UserAccounts
356 UTF8Encoding encoding = new UTF8Encoding(); 356 UTF8Encoding encoding = new UTF8Encoding();
357 return encoding.GetBytes(xmlString); 357 return encoding.GetBytes(xmlString);
358 } 358 }
359
360
361 } 359 }
362} 360}
diff --git a/OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs b/OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs
index edc1097..229f557 100644
--- a/OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs
+++ b/OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs
@@ -30,9 +30,10 @@ using OpenMetaverse;
30using log4net; 30using log4net;
31using Nini.Config; 31using Nini.Config;
32using System.Reflection; 32using System.Reflection;
33using OpenSim.Services.Base;
34using OpenSim.Data; 33using OpenSim.Data;
35using OpenSim.Framework; 34using OpenSim.Framework;
35using OpenSim.Services.Base;
36using OpenSim.Services.Interfaces;
36 37
37namespace OpenSim.Services.AuthenticationService 38namespace OpenSim.Services.AuthenticationService
38{ 39{
@@ -126,6 +127,50 @@ namespace OpenSim.Services.AuthenticationService
126 m_log.InfoFormat("[AUTHENTICATION DB]: Set password for principalID {0}", principalID); 127 m_log.InfoFormat("[AUTHENTICATION DB]: Set password for principalID {0}", principalID);
127 return true; 128 return true;
128 } 129 }
130
131 public virtual AuthInfo GetAuthInfo(UUID principalID)
132 {
133 AuthenticationData data = m_Database.Get(principalID);
134
135 if (data == null)
136 {
137 return null;
138 }
139 else
140 {
141 AuthInfo info
142 = new AuthInfo()
143 {
144 PrincipalID = data.PrincipalID,
145 AccountType = data.Data["accountType"] as string,
146 PasswordHash = data.Data["passwordHash"] as string,
147 PasswordSalt = data.Data["passwordSalt"] as string,
148 WebLoginKey = data.Data["webLoginKey"] as string
149 };
150
151 return info;
152 }
153 }
154
155 public virtual bool SetAuthInfo(AuthInfo info)
156 {
157 AuthenticationData auth = new AuthenticationData();
158 auth.PrincipalID = info.PrincipalID;
159 auth.Data = new System.Collections.Generic.Dictionary<string, object>();
160 auth.Data["accountType"] = info.AccountType;
161 auth.Data["webLoginKey"] = info.WebLoginKey;
162 auth.Data["passwordHash"] = info.PasswordHash;
163 auth.Data["passwordSalt"] = info.PasswordSalt;
164
165 if (!m_Database.Store(auth))
166 {
167 m_log.ErrorFormat("[AUTHENTICATION DB]: Failed to store authentication info.");
168 return false;
169 }
170
171 m_log.DebugFormat("[AUTHENTICATION DB]: Set authentication info for principalID {0}", info.PrincipalID);
172 return true;
173 }
129 174
130 protected string GetToken(UUID principalID, int lifetime) 175 protected string GetToken(UUID principalID, int lifetime)
131 { 176 {
diff --git a/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs b/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs
index c04e7a4..2b77154 100644
--- a/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs
@@ -151,5 +151,17 @@ namespace OpenSim.Services.Connectors
151 // nope, we don't do this 151 // nope, we don't do this
152 return false; 152 return false;
153 } 153 }
154
155 public AuthInfo GetAuthInfo(UUID principalID)
156 {
157 // not done from remote simulators
158 return null;
159 }
160
161 public bool SetAuthInfo(AuthInfo info)
162 {
163 // not done from remote simulators
164 return false;
165 }
154 } 166 }
155} 167}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
index 51a09f8..69f6ed2 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
@@ -236,6 +236,16 @@ namespace OpenSim.Services.Connectors.SimianGrid
236 return false; 236 return false;
237 } 237 }
238 238
239 public AuthInfo GetAuthInfo(UUID principalID)
240 {
241 throw new NotImplementedException();
242 }
243
244 public bool SetAuthInfo(AuthInfo info)
245 {
246 throw new NotImplementedException();
247 }
248
239 private bool CheckPassword(UUID userID, string password, string simianGridCredential, out string authorizeResult) 249 private bool CheckPassword(UUID userID, string password, string simianGridCredential, out string authorizeResult)
240 { 250 {
241 if (simianGridCredential.Contains(":")) 251 if (simianGridCredential.Contains(":"))
diff --git a/OpenSim/Services/Interfaces/IAuthenticationService.cs b/OpenSim/Services/Interfaces/IAuthenticationService.cs
index 9de261b..cee8bc0 100644
--- a/OpenSim/Services/Interfaces/IAuthenticationService.cs
+++ b/OpenSim/Services/Interfaces/IAuthenticationService.cs
@@ -26,10 +26,32 @@
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections.Generic;
29using OpenMetaverse; 30using OpenMetaverse;
30 31
31namespace OpenSim.Services.Interfaces 32namespace OpenSim.Services.Interfaces
32{ 33{
34 public class AuthInfo
35 {
36 public UUID PrincipalID { get; set; }
37 public string AccountType { get; set; }
38 public string PasswordHash { get; set; }
39 public string PasswordSalt { get; set; }
40 public string WebLoginKey { get; set; }
41
42 public Dictionary<string, object> ToKeyValuePairs()
43 {
44 Dictionary<string, object> result = new Dictionary<string, object>();
45 result["PrincipalID"] = PrincipalID;
46 result["AccountType"] = AccountType;
47 result["PasswordHash"] = PasswordHash;
48 result["PasswordSalt"] = PasswordSalt;
49 result["WebLoginKey"] = WebLoginKey;
50
51 return result;
52 }
53 }
54
33 // Generic Authentication service used for identifying 55 // Generic Authentication service used for identifying
34 // and authenticating principals. 56 // and authenticating principals.
35 // Principals may be clients acting on users' behalf, 57 // Principals may be clients acting on users' behalf,
@@ -76,6 +98,10 @@ namespace OpenSim.Services.Interfaces
76 // 98 //
77 bool SetPassword(UUID principalID, string passwd); 99 bool SetPassword(UUID principalID, string passwd);
78 100
101 AuthInfo GetAuthInfo(UUID principalID);
102
103 bool SetAuthInfo(AuthInfo info);
104
79 ////////////////////////////////////////////////////// 105 //////////////////////////////////////////////////////
80 // Grid 106 // Grid
81 // 107 //