From 16940097beee0fad554dfcb7249294ff8ac247d4 Mon Sep 17 00:00:00 2001 From: Rob Smart Date: Wed, 9 Sep 2009 19:42:53 +0100 Subject: The stubs for an authorization service, at the moment the service will always grant access to an avatar entering the region if requested. --- .../AuthorizationService/AuthorizationService.cs | 56 +++++++++++++ .../AuthorizationServiceBase.cs | 83 ++++++++++++++++++++ .../Authorization/AuthorizationServiceConnector.cs | 91 ++++++++++++++++++++++ .../Services/Interfaces/IAuthorizationService.cs | 46 +++++++++++ 4 files changed, 276 insertions(+) create mode 100644 OpenSim/Services/AuthorizationService/AuthorizationService.cs create mode 100644 OpenSim/Services/AuthorizationService/AuthorizationServiceBase.cs create mode 100644 OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs create mode 100644 OpenSim/Services/Interfaces/IAuthorizationService.cs (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/AuthorizationService/AuthorizationService.cs b/OpenSim/Services/AuthorizationService/AuthorizationService.cs new file mode 100644 index 0000000..e779325 --- /dev/null +++ b/OpenSim/Services/AuthorizationService/AuthorizationService.cs @@ -0,0 +1,56 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Reflection; +using Nini.Config; +using log4net; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Data; +using OpenSim.Services.Interfaces; +using OpenMetaverse; + +namespace OpenSim.Services.AuthorizationService +{ + public class AuthorizationService : AuthorizationServiceBase, IAuthorizationService + { + private static readonly ILog m_log = + LogManager.GetLogger( + MethodBase.GetCurrentMethod().DeclaringType); + + public AuthorizationService(IConfigSource config) : base(config) + { + m_log.Info("[AUTHORIZATION CONNECTOR]: Local Authorization service enabled"); + } + + public bool isAuthorizedForRegion(UserProfileData user, RegionInfo region) + { + return true; + } + } +} diff --git a/OpenSim/Services/AuthorizationService/AuthorizationServiceBase.cs b/OpenSim/Services/AuthorizationService/AuthorizationServiceBase.cs new file mode 100644 index 0000000..9e6d070 --- /dev/null +++ b/OpenSim/Services/AuthorizationService/AuthorizationServiceBase.cs @@ -0,0 +1,83 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Reflection; +using Nini.Config; +using OpenSim.Framework; +using OpenSim.Data; +using OpenSim.Services.Interfaces; +using OpenSim.Services.Base; + +namespace OpenSim.Services.AuthorizationService +{ + public class AuthorizationServiceBase : ServiceBase + { + protected IAssetDataPlugin m_Database = null; + + public AuthorizationServiceBase(IConfigSource config) : base(config) + { + string dllName = String.Empty; + string connString = String.Empty; + + // + // Try reading the [AuthorizationService] section first, if it exists + // + IConfig assetConfig = config.Configs["AuthorizationService"]; + if (assetConfig != null) + { + dllName = assetConfig.GetString("StorageProvider", dllName); + connString = assetConfig.GetString("ConnectionString", connString); + } + + // + // Try reading the [DatabaseService] section, if it exists + // + IConfig dbConfig = config.Configs["DatabaseService"]; + if (dbConfig != null) + { + if (dllName == String.Empty) + dllName = dbConfig.GetString("StorageProvider", String.Empty); + if (connString == String.Empty) + connString = dbConfig.GetString("ConnectionString", String.Empty); + } + + // + // We tried, but this doesn't exist. We can't proceed. + // + if (dllName.Equals(String.Empty)) + throw new Exception("No StorageProvider configured"); + + m_Database = LoadPlugin(dllName); + if (m_Database == null) + throw new Exception("Could not find a storage interface in the given module"); + + m_Database.Initialise(connString); + + } + } +} diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs new file mode 100644 index 0000000..a0cdc30 --- /dev/null +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs @@ -0,0 +1,91 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using log4net; +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using Nini.Config; +using OpenSim.Framework; +using OpenSim.Framework.Communications; +using OpenSim.Framework.Servers.HttpServer; +using OpenSim.Services.Interfaces; +using OpenMetaverse; + +namespace OpenSim.Services.Connectors +{ + public class AuthorizationServicesConnector : IAuthorizationService + { + private static readonly ILog m_log = + LogManager.GetLogger( + MethodBase.GetCurrentMethod().DeclaringType); + + private string m_ServerURI = String.Empty; + + public AuthorizationServicesConnector() + { + } + + public AuthorizationServicesConnector(string serverURI) + { + m_ServerURI = serverURI.TrimEnd('/'); + } + + public AuthorizationServicesConnector(IConfigSource source) + { + Initialise(source); + } + + public virtual void Initialise(IConfigSource source) + { + IConfig authorizationConfig = source.Configs["AuthorizationService"]; + if (authorizationConfig == null) + { + m_log.Error("[AUTHORIZATION CONNECTOR]: AuthorizationService missing from OpanSim.ini"); + throw new Exception("Authorization connector init error"); + } + + string serviceURI = authorizationConfig.GetString("AuthorizationServerURI", + String.Empty); + + if (serviceURI == String.Empty) + { + m_log.Error("[AUTHORIZATION CONNECTOR]: No Server URI named in section AssetService"); + throw new Exception("Authorization connector init error"); + } + m_ServerURI = serviceURI; + } + + public bool isAuthorizedForRegion(UserProfileData user, RegionInfo region) + { + // call remote service + return true; + } + + } +} diff --git a/OpenSim/Services/Interfaces/IAuthorizationService.cs b/OpenSim/Services/Interfaces/IAuthorizationService.cs new file mode 100644 index 0000000..e8b7298 --- /dev/null +++ b/OpenSim/Services/Interfaces/IAuthorizationService.cs @@ -0,0 +1,46 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using OpenSim.Framework; + +namespace OpenSim.Services.Interfaces +{ + // Generic Authorization service used for authorizing principals in a particular region + + public interface IAuthorizationService + { + ////////////////////////////////////////////////////// + // Authorized + // + // This method returns a simple true false indicating + // whether or not a user has access to the region + // + bool isAuthorizedForRegion(UserProfileData user, RegionInfo region); + + } +} -- cgit v1.1 From 953ef780c5858b70b3b2da551640c93105feb12c Mon Sep 17 00:00:00 2001 From: Rob Smart Date: Thu, 10 Sep 2009 16:13:18 +0100 Subject: adding in working functionality for the remote connector --- .../Authorization/AuthorizationServiceConnector.cs | 36 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs index a0cdc30..151d96a 100644 --- a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs @@ -46,6 +46,7 @@ namespace OpenSim.Services.Connectors MethodBase.GetCurrentMethod().DeclaringType); private string m_ServerURI = String.Empty; + private bool m_ResponseOnFailure = true; public AuthorizationServicesConnector() { @@ -66,7 +67,7 @@ namespace OpenSim.Services.Connectors IConfig authorizationConfig = source.Configs["AuthorizationService"]; if (authorizationConfig == null) { - m_log.Error("[AUTHORIZATION CONNECTOR]: AuthorizationService missing from OpanSim.ini"); + m_log.Error("[AUTHORIZATION CONNECTOR]: AuthorizationService missing from OpenSim.ini"); throw new Exception("Authorization connector init error"); } @@ -75,16 +76,43 @@ namespace OpenSim.Services.Connectors if (serviceURI == String.Empty) { - m_log.Error("[AUTHORIZATION CONNECTOR]: No Server URI named in section AssetService"); + m_log.Error("[AUTHORIZATION CONNECTOR]: No Server URI named in section AuthorizationService"); throw new Exception("Authorization connector init error"); } m_ServerURI = serviceURI; + + // this dictates what happens if the remote service fails, if the service fails and the value is true + // the user is authorized for the region. + bool responseOnFailure = authorizationConfig.GetBoolean("ResponseOnFailure",true); + + m_ResponseOnFailure = responseOnFailure; } public bool isAuthorizedForRegion(UserProfileData user, RegionInfo region) { - // call remote service - return true; + // this should be a remote call to the authorization server specified in the AuthorizationServerURI + m_log.Info("[AUTHORIZATION CONNECTOR]: isAuthorizedForRegion is not yet implemented. Returning true, the user is authorized "); + + string uri = m_ServerURI + "?uuid="+user.ID + "&firstname="+user.FirstName+"&lastname="+user.SurName+"®ion="+region.RegionName+"®ionid="+region.RegionID+"&email="+user.Email; + + string result = string.Empty; + + try + { + result = SynchronousRestObjectRequester. + MakeRequest("POST", uri, user); + } + catch (Exception e) + { + m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} {1} for region {2} error thrown during comms with remote server. Reason: {3}", user.FirstName,user.SurName,region.RegionName, e.Message); + return m_ResponseOnFailure; + } + + m_log.DebugFormat("[AUTHORIZATION CONNECTOR] response from remote service was {0}",result); + if(result.Contains("success")) + return true; + else + return false; } } -- cgit v1.1 From b5c8925fdf17db87df6118449f2f84adb1326225 Mon Sep 17 00:00:00 2001 From: Rob Smart Date: Thu, 10 Sep 2009 20:15:50 +0100 Subject: added AuthorizationRequest and AuthorizationResponse objects for passing Authorization messages over http. Added handling code for these in the AuthorizationServerConnector and AuthorizationServicesConnector --- .../Authorization/AuthorizationServiceConnector.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs index 151d96a..d65afc6 100644 --- a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs @@ -90,26 +90,27 @@ namespace OpenSim.Services.Connectors public bool isAuthorizedForRegion(UserProfileData user, RegionInfo region) { - // this should be a remote call to the authorization server specified in the AuthorizationServerURI - m_log.Info("[AUTHORIZATION CONNECTOR]: isAuthorizedForRegion is not yet implemented. Returning true, the user is authorized "); + // do a remote call to the authorization server specified in the AuthorizationServerURI + m_log.InfoFormat("[AUTHORIZATION CONNECTOR]: isAuthorizedForRegion checking {0} {1} at remote server {2}",user.FirstName,user.SurName, m_ServerURI); - string uri = m_ServerURI + "?uuid="+user.ID + "&firstname="+user.FirstName+"&lastname="+user.SurName+"®ion="+region.RegionName+"®ionid="+region.RegionID+"&email="+user.Email; + string uri = m_ServerURI; - string result = string.Empty; + AuthorizationRequest req = new AuthorizationRequest(user.ID.ToString(),user.FirstName,user.SurName,user.Email,region.RegionName,region.RegionID.ToString()); + AuthorizationResponse response; try { - result = SynchronousRestObjectRequester. - MakeRequest("POST", uri, user); + response = SynchronousRestObjectRequester.MakeRequest("POST", uri, req); } catch (Exception e) { m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} {1} for region {2} error thrown during comms with remote server. Reason: {3}", user.FirstName,user.SurName,region.RegionName, e.Message); + m_log.WarnFormat("Inner Exception is {0}",e.InnerException); return m_ResponseOnFailure; } - m_log.DebugFormat("[AUTHORIZATION CONNECTOR] response from remote service was {0}",result); - if(result.Contains("success")) + m_log.DebugFormat("[AUTHORIZATION CONNECTOR] response from remote service was {0}",response.Message); + if(response.IsAuthorized) return true; else return false; -- cgit v1.1 From ce332f235ccc5168cfc44834e16318497c67cdd7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 10 Sep 2009 19:56:08 -0700 Subject: Changed the interface of IAuthorizationService to get less data. --- .../AuthorizationService/AuthorizationService.cs | 2 +- .../Authorization/AuthorizationServiceConnector.cs | 16 +++++++--------- OpenSim/Services/Interfaces/IAuthorizationService.cs | 2 +- 3 files changed, 9 insertions(+), 11 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/AuthorizationService/AuthorizationService.cs b/OpenSim/Services/AuthorizationService/AuthorizationService.cs index e779325..c795ba0 100644 --- a/OpenSim/Services/AuthorizationService/AuthorizationService.cs +++ b/OpenSim/Services/AuthorizationService/AuthorizationService.cs @@ -48,7 +48,7 @@ namespace OpenSim.Services.AuthorizationService m_log.Info("[AUTHORIZATION CONNECTOR]: Local Authorization service enabled"); } - public bool isAuthorizedForRegion(UserProfileData user, RegionInfo region) + public bool IsAuthorizedForRegion(string userID, string regionID) { return true; } diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs index d65afc6..d50a6ed 100644 --- a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs @@ -88,14 +88,14 @@ namespace OpenSim.Services.Connectors m_ResponseOnFailure = responseOnFailure; } - public bool isAuthorizedForRegion(UserProfileData user, RegionInfo region) + public bool IsAuthorizedForRegion(string userID, string regionID) { // do a remote call to the authorization server specified in the AuthorizationServerURI - m_log.InfoFormat("[AUTHORIZATION CONNECTOR]: isAuthorizedForRegion checking {0} {1} at remote server {2}",user.FirstName,user.SurName, m_ServerURI); + m_log.InfoFormat("[AUTHORIZATION CONNECTOR]: IsAuthorizedForRegion checking {0} at remote server {1}", userID, m_ServerURI); string uri = m_ServerURI; - AuthorizationRequest req = new AuthorizationRequest(user.ID.ToString(),user.FirstName,user.SurName,user.Email,region.RegionName,region.RegionID.ToString()); + AuthorizationRequest req = new AuthorizationRequest(userID, regionID); AuthorizationResponse response; try @@ -104,16 +104,14 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} {1} for region {2} error thrown during comms with remote server. Reason: {3}", user.FirstName,user.SurName,region.RegionName, e.Message); + m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} for region {1} error thrown during comms with remote server. Reason: {2}", userID, regionID, e.Message); m_log.WarnFormat("Inner Exception is {0}",e.InnerException); return m_ResponseOnFailure; } - m_log.DebugFormat("[AUTHORIZATION CONNECTOR] response from remote service was {0}",response.Message); - if(response.IsAuthorized) - return true; - else - return false; + m_log.DebugFormat("[AUTHORIZATION CONNECTOR] response from remote service was {0}", response.Message); + + return response.IsAuthorized; } } diff --git a/OpenSim/Services/Interfaces/IAuthorizationService.cs b/OpenSim/Services/Interfaces/IAuthorizationService.cs index e8b7298..6acd1f6 100644 --- a/OpenSim/Services/Interfaces/IAuthorizationService.cs +++ b/OpenSim/Services/Interfaces/IAuthorizationService.cs @@ -40,7 +40,7 @@ namespace OpenSim.Services.Interfaces // This method returns a simple true false indicating // whether or not a user has access to the region // - bool isAuthorizedForRegion(UserProfileData user, RegionInfo region); + bool IsAuthorizedForRegion(string userID, string regionID); } } -- cgit v1.1 From eaec7cf39ce134b4da0622f67ee6037843f6eb29 Mon Sep 17 00:00:00 2001 From: Rob Smart Date: Fri, 11 Sep 2009 12:28:48 +0100 Subject: Changed RemoteAuthorizationServiceConnector so that it implements the IAuthorization interface method isAuthorizedForRegion looks up user and region data and delegates the remote authorization check to the AuthorizationServiceConnector This keeps the IAuthorization as clean as possible and moves the dependency of using a UserProfileData object out to the connector from the scene. --- .../Connectors/Authorization/AuthorizationServiceConnector.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs index d50a6ed..bc4daad 100644 --- a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs @@ -39,7 +39,7 @@ using OpenMetaverse; namespace OpenSim.Services.Connectors { - public class AuthorizationServicesConnector : IAuthorizationService + public class AuthorizationServicesConnector { private static readonly ILog m_log = LogManager.GetLogger( @@ -88,14 +88,14 @@ namespace OpenSim.Services.Connectors m_ResponseOnFailure = responseOnFailure; } - public bool IsAuthorizedForRegion(string userID, string regionID) + public bool IsAuthorizedForRegion(string userID,string firstname, string surname, string email, string regionName, string regionID) { // do a remote call to the authorization server specified in the AuthorizationServerURI m_log.InfoFormat("[AUTHORIZATION CONNECTOR]: IsAuthorizedForRegion checking {0} at remote server {1}", userID, m_ServerURI); string uri = m_ServerURI; - AuthorizationRequest req = new AuthorizationRequest(userID, regionID); + AuthorizationRequest req = new AuthorizationRequest(userID, firstname, surname, email, regionName, regionID); AuthorizationResponse response; try @@ -105,7 +105,6 @@ namespace OpenSim.Services.Connectors catch (Exception e) { m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} for region {1} error thrown during comms with remote server. Reason: {2}", userID, regionID, e.Message); - m_log.WarnFormat("Inner Exception is {0}",e.InnerException); return m_ResponseOnFailure; } -- cgit v1.1 From ca0810a1036f54f61cd92ab9356de538f4783e2c Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 11 Sep 2009 06:59:10 -0700 Subject: Minor indentation cleanup. --- .../Services/Connectors/Authorization/AuthorizationServiceConnector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs index bc4daad..98309f1 100644 --- a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs @@ -88,7 +88,7 @@ namespace OpenSim.Services.Connectors m_ResponseOnFailure = responseOnFailure; } - public bool IsAuthorizedForRegion(string userID,string firstname, string surname, string email, string regionName, string regionID) + public bool IsAuthorizedForRegion(string userID, string firstname, string surname, string email, string regionName, string regionID) { // do a remote call to the authorization server specified in the AuthorizationServerURI m_log.InfoFormat("[AUTHORIZATION CONNECTOR]: IsAuthorizedForRegion checking {0} at remote server {1}", userID, m_ServerURI); -- cgit v1.1 From 44f1092b8301a6cddd5066939029aa5bad256a57 Mon Sep 17 00:00:00 2001 From: Rob Smart Date: Fri, 11 Sep 2009 16:31:05 +0100 Subject: moved AuthorizationRequest and AuthorizationResponse to IAuthorizationService to keep service dependencies together. --- .../Services/Interfaces/IAuthorizationService.cs | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Interfaces/IAuthorizationService.cs b/OpenSim/Services/Interfaces/IAuthorizationService.cs index 6acd1f6..91afa9a 100644 --- a/OpenSim/Services/Interfaces/IAuthorizationService.cs +++ b/OpenSim/Services/Interfaces/IAuthorizationService.cs @@ -43,4 +43,102 @@ namespace OpenSim.Services.Interfaces bool IsAuthorizedForRegion(string userID, string regionID); } + + public class AuthorizationRequest + { + private string m_userID; + private string m_firstname; + private string m_surname; + private string m_email; + private string m_regionName; + private string m_regionID; + + public AuthorizationRequest() + { + } + + public AuthorizationRequest(string ID, string RegionID) + { + m_userID = ID; + m_regionID = RegionID; + } + + public AuthorizationRequest(string ID,string FirstName, string SurName, string Email, string RegionName, string RegionID) + { + m_userID = ID; + m_firstname = FirstName; + m_surname = SurName; + m_email = Email; + m_regionName = RegionName; + m_regionID = RegionID; + } + + public string ID + { + get { return m_userID; } + set { m_userID = value; } + } + + public string FirstName + { + get { return m_firstname; } + set { m_firstname = value; } + } + + public string SurName + { + get { return m_surname; } + set { m_surname = value; } + } + + public string Email + { + get { return m_email; } + set { m_email = value; } + } + + public string RegionName + { + get { return m_regionName; } + set { m_regionName = value; } + } + + public string RegionID + { + get { return m_regionID; } + set { m_regionID = value; } + } + + + + } + + public class AuthorizationResponse + { + private bool m_isAuthorized; + private string m_message; + + public AuthorizationResponse() + { + } + + public AuthorizationResponse(bool isAuthorized, string message) + { + m_isAuthorized = isAuthorized; + m_message = message; + + } + + public bool IsAuthorized + { + get { return m_isAuthorized; } + set { m_isAuthorized = value; } + } + + public string Message + { + get { return m_message; } + set { m_message = value; } + } + } } -- cgit v1.1