diff options
author | Justin Clark-Casey (justincc) | 2011-10-24 21:34:44 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-10-24 21:40:36 +0100 |
commit | 4c9400e6460a73baa2d687afe73a62c6efca9f37 (patch) | |
tree | 9302270fbf46288ef5aeccbac0c0925e6f1a118b /OpenSim/Server/Handlers/Authentication | |
parent | Comment out the uuid gatherer lines that I accidentally left in. (diff) | |
download | opensim-SC-4c9400e6460a73baa2d687afe73a62c6efca9f37.zip opensim-SC-4c9400e6460a73baa2d687afe73a62c6efca9f37.tar.gz opensim-SC-4c9400e6460a73baa2d687afe73a62c6efca9f37.tar.bz2 opensim-SC-4c9400e6460a73baa2d687afe73a62c6efca9f37.tar.xz |
Add optional getauthinfo and setauthinfo authentication service calls.
These are disabled by default, as before. Please only turn these on in secure grids, since they allow the same facilities as the existing SetPassword call (also disabled by default)
These facilities can be helpful when integrating external systems, in addition to the existing option of adapting an IAuthenticationService or using WebLoginKey
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs | 74 |
1 files changed, 73 insertions, 1 deletions
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 | } |