aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs57
1 files changed, 47 insertions, 10 deletions
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
index cc53d6c..e78429d 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
@@ -78,14 +78,14 @@ namespace OpenSim.Services.Connectors.SimianGrid
78 IConfig assetConfig = source.Configs["AuthenticationService"]; 78 IConfig assetConfig = source.Configs["AuthenticationService"];
79 if (assetConfig == null) 79 if (assetConfig == null)
80 { 80 {
81 m_log.Error("[AUTH CONNECTOR]: AuthenticationService missing from OpenSim.ini"); 81 m_log.Error("[SIMIAN AUTH CONNECTOR]: AuthenticationService missing from OpenSim.ini");
82 throw new Exception("Authentication connector init error"); 82 throw new Exception("Authentication connector init error");
83 } 83 }
84 84
85 string serviceURI = assetConfig.GetString("AuthenticationServerURI"); 85 string serviceURI = assetConfig.GetString("AuthenticationServerURI");
86 if (String.IsNullOrEmpty(serviceURI)) 86 if (String.IsNullOrEmpty(serviceURI))
87 { 87 {
88 m_log.Error("[AUTH CONNECTOR]: No Server URI named in section AuthenticationService"); 88 m_log.Error("[SIMIAN AUTH CONNECTOR]: No Server URI named in section AuthenticationService");
89 throw new Exception("Authentication connector init error"); 89 throw new Exception("Authentication connector init error");
90 } 90 }
91 91
@@ -114,17 +114,17 @@ namespace OpenSim.Services.Connectors.SimianGrid
114 { 114 {
115 string credential = identity["Credential"].AsString(); 115 string credential = identity["Credential"].AsString();
116 116
117 if (password == credential || Utils.MD5String(password) == credential) 117 if (password == credential || "$1$" + Utils.MD5String(password) == credential)
118 return Authorize(principalID); 118 return Authorize(principalID);
119 } 119 }
120 } 120 }
121 } 121 }
122 122
123 m_log.Warn("[AUTH CONNECTOR]: Authentication failed for " + principalID); 123 m_log.Warn("[SIMIAN AUTH CONNECTOR]: Authentication failed for " + principalID);
124 } 124 }
125 else 125 else
126 { 126 {
127 m_log.Warn("[AUTH CONNECTOR]: Failed to retrieve identities for " + principalID + ": " + 127 m_log.Warn("[SIMIAN AUTH CONNECTOR]: Failed to retrieve identities for " + principalID + ": " +
128 response["Message"].AsString()); 128 response["Message"].AsString());
129 } 129 }
130 130
@@ -146,7 +146,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
146 } 146 }
147 else 147 else
148 { 148 {
149 m_log.Warn("[AUTH CONNECTOR]: Could not verify session for " + principalID + ": " + 149 m_log.Warn("[SIMIAN AUTH CONNECTOR]: Could not verify session for " + principalID + ": " +
150 response["Message"].AsString()); 150 response["Message"].AsString());
151 } 151 }
152 152
@@ -168,7 +168,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
168 } 168 }
169 else 169 else
170 { 170 {
171 m_log.Warn("[AUTH CONNECTOR]: Failed to remove session for " + principalID + ": " + 171 m_log.Warn("[SIMIAN AUTH CONNECTOR]: Failed to remove session for " + principalID + ": " +
172 response["Message"].AsString()); 172 response["Message"].AsString());
173 } 173 }
174 174
@@ -177,9 +177,46 @@ namespace OpenSim.Services.Connectors.SimianGrid
177 177
178 public bool SetPassword(UUID principalID, string passwd) 178 public bool SetPassword(UUID principalID, string passwd)
179 { 179 {
180 // TODO: Use GetIdentities to find the md5hash identity for principalID 180 // Fetch the user name first
181 // and then update it with AddIdentity 181 NameValueCollection requestArgs = new NameValueCollection
182 m_log.Error("[AUTH CONNECTOR]: Changing passwords is not implemented yet"); 182 {
183 { "RequestMethod", "GetUser" },
184 { "UserID", principalID.ToString() }
185 };
186
187 OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs);
188 if (response["Success"].AsBoolean() && response["User"] is OSDMap)
189 {
190 OSDMap userMap = (OSDMap)response["User"];
191 string identifier = userMap["Name"].AsString();
192
193 if (!String.IsNullOrEmpty(identifier))
194 {
195 // Add/update the md5hash identity
196 requestArgs = new NameValueCollection
197 {
198 { "RequestMethod", "AddIdentity" },
199 { "Identifier", identifier },
200 { "Credential", "$1$" + Utils.MD5String(passwd) },
201 { "Type", "md5hash" },
202 { "UserID", principalID.ToString() }
203 };
204
205 response = WebUtil.PostToService(m_serverUrl, requestArgs);
206 bool success = response["Success"].AsBoolean();
207
208 if (!success)
209 m_log.WarnFormat("[SIMIAN AUTH CONNECTOR]: Failed to set password for {0} ({1})", identifier, principalID);
210
211 return success;
212 }
213 }
214 else
215 {
216 m_log.Warn("[SIMIAN AUTH CONNECTOR]: Failed to retrieve identities for " + principalID + ": " +
217 response["Message"].AsString());
218 }
219
183 return false; 220 return false;
184 } 221 }
185 222