Fix XBakes simulator-side authentication regression failure

Unlike the other connectors, XBakes uses a service auth retrieved from ServiceAuth.Create() and not code inherited from BaseServiceConnector.
Fixes regression from 7d3bafd5 (Wed 4 Mar 2015) where the new CompoundAuthenticator did not implement IServiceAuth.AddAuthorization()
inv-download
Justin Clark-Casey (justincc) 2015-03-16 23:40:34 +00:00
parent e6889a6023
commit eda09d8763
5 changed files with 29 additions and 3 deletions

View File

@ -40,6 +40,8 @@ namespace OpenSim.Framework.ServiceAuth
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public string Name { get { return "BasicHttp"; } }
private string m_Username, m_Password; private string m_Username, m_Password;
private string m_CredentialsB64; private string m_CredentialsB64;

View File

@ -35,10 +35,17 @@ namespace OpenSim.Framework.ServiceAuth
{ {
public class CompoundAuthentication : IServiceAuth public class CompoundAuthentication : IServiceAuth
{ {
public string Name { get { return "Compound"; } }
private List<IServiceAuth> m_authentications = new List<IServiceAuth>(); private List<IServiceAuth> m_authentications = new List<IServiceAuth>();
public int Count { get { return m_authentications.Count; } } public int Count { get { return m_authentications.Count; } }
public List<IServiceAuth> GetAuthentors()
{
return new List<IServiceAuth>(m_authentications);
}
public void AddAuthenticator(IServiceAuth auth) public void AddAuthenticator(IServiceAuth auth)
{ {
m_authentications.Add(auth); m_authentications.Add(auth);
@ -49,7 +56,11 @@ namespace OpenSim.Framework.ServiceAuth
m_authentications.Remove(auth); m_authentications.Remove(auth);
} }
public void AddAuthorization(NameValueCollection headers) {} public void AddAuthorization(NameValueCollection headers)
{
foreach (IServiceAuth auth in m_authentications)
auth.AddAuthorization(headers);
}
public bool Authenticate(string data) public bool Authenticate(string data)
{ {

View File

@ -33,6 +33,8 @@ namespace OpenSim.Framework.ServiceAuth
{ {
public class DisallowLlHttpRequest : IServiceAuth public class DisallowLlHttpRequest : IServiceAuth
{ {
public string Name { get { return "DisallowllHTTPRequest"; } }
public void AddAuthorization(NameValueCollection headers) {} public void AddAuthorization(NameValueCollection headers) {}
public bool Authenticate(string data) public bool Authenticate(string data)

View File

@ -34,8 +34,13 @@ namespace OpenSim.Framework.ServiceAuth
{ {
public delegate void AddHeaderDelegate(string key, string value); public delegate void AddHeaderDelegate(string key, string value);
public interface IServiceAuth public interface IServiceAuth
{ {
/// <summary>
/// Name of this authenticator.
/// </summary>
string Name { get; }
bool Authenticate(string data); bool Authenticate(string data);
bool Authenticate(NameValueCollection headers, AddHeaderDelegate d, out HttpStatusCode statusCode); bool Authenticate(NameValueCollection headers, AddHeaderDelegate d, out HttpStatusCode statusCode);
void AddAuthorization(NameValueCollection headers); void AddAuthorization(NameValueCollection headers);

View File

@ -27,13 +27,16 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection;
using log4net;
using Nini.Config; using Nini.Config;
namespace OpenSim.Framework.ServiceAuth namespace OpenSim.Framework.ServiceAuth
{ {
public class ServiceAuth public class ServiceAuth
{ {
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public static IServiceAuth Create(IConfigSource config, string section) public static IServiceAuth Create(IConfigSource config, string section)
{ {
CompoundAuthentication compoundAuth = new CompoundAuthentication(); CompoundAuthentication compoundAuth = new CompoundAuthentication();
@ -53,6 +56,9 @@ namespace OpenSim.Framework.ServiceAuth
break; break;
} }
// foreach (IServiceAuth auth in compoundAuth.GetAuthentors())
// m_log.DebugFormat("[SERVICE AUTH]: Configured authenticator {0}", auth.Name);
if (compoundAuth.Count > 0) if (compoundAuth.Count > 0)
return compoundAuth; return compoundAuth;
else else