Author: ritchiem
Date: Mon Apr 2 03:50:06 2007
New Revision: 524763
URL: http://svn.apache.org/viewvc?view=rev&rev=524763
Log:
Added verify password method to PrincipalDatabase
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java
Mon Apr 2 03:50:06 2007
@@ -67,7 +67,7 @@
cram.initialise(this);
// Accept Plain incomming and hash it for comparison to the file.
CRAMMD5Initialiser plain = new CRAMMD5Initialiser();
- plain.initialise(this,CRAMMD5Initialiser.HashDirection.INCOMMING);
+ plain.initialise(this, CRAMMD5Initialiser.HashDirection.INCOMMING);
_saslServers.put(plain.getMechanismName(), cram);
_saslServers.put(cram.getMechanismName(), plain);
@@ -111,10 +111,40 @@
}
}
+ public boolean verifyPassword(Principal principal, char[] password) throws
AccountNotFoundException
+ {
+ try
+ {
+ char[] pwd = lookupPassword(principal.getName());
+ return compareCharArray(pwd, password);
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ }
+
public Map<String, AuthenticationProviderInitialiser> getMechanisms()
{
return _saslServers;
}
+
+ private boolean compareCharArray(char[] a, char[] b)
+ {
+ boolean equal = false;
+ if (a.length == b.length)
+ {
+ equal = true;
+ int index = 0;
+ while (equal && index < a.length)
+ {
+ equal = a[index] == b[index];
+ index++;
+ }
+ }
+ return equal;
+ }
+
/**
* Looks up the password for a specified user in the password file. Note
this code is <b>not</b> secure since it
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
Mon Apr 2 03:50:06 2007
@@ -119,9 +119,38 @@
}
}
+ public boolean verifyPassword(Principal principal, char[] password) throws
AccountNotFoundException
+ {
+ try
+ {
+ char[] pwd = lookupPassword(principal.getName());
+ return compareCharArray(pwd, password);
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ }
+
public Map<String, AuthenticationProviderInitialiser> getMechanisms()
{
return _saslServers;
+ }
+
+ private boolean compareCharArray(char[] a, char[] b)
+ {
+ boolean equal = false;
+ if (a.length == b.length)
+ {
+ equal = true;
+ int index = 0;
+ while (equal && index < a.length)
+ {
+ equal = a[index] == b[index];
+ index++;
+ }
+ }
+ return equal;
}
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java
Mon Apr 2 03:50:06 2007
@@ -126,4 +126,5 @@
{
return "PlainPasswordVhostFile";
}
+
}
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
Mon Apr 2 03:50:06 2007
@@ -46,5 +46,19 @@
void setPassword(Principal principal, PasswordCallback callback)
throws IOException, AccountNotFoundException;
+ /**
+ * Set the password for a given principal in the specified callback. This
is used for certain SASL providers. The
+ * user database implementation should look up the password in any way it
chooses and set it in the callback by
+ * calling its setPassword method.
+ *
+ * @param principal the principal
+ * @param password the password to be verified
+ *
+ * @throws AccountNotFoundException if the account for specified principal
could not be found
+ * @return true if the account is verified.
+ */
+ boolean verifyPassword(Principal principal, char[] password)
+ throws AccountNotFoundException;
+
public Map<String, AuthenticationProviderInitialiser> getMechanisms();
}
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java
Mon Apr 2 03:50:06 2007
@@ -76,6 +76,29 @@
}
}
+ public boolean verifyPassword(Principal principal, char[] password) throws
AccountNotFoundException
+ {
+ char[] pwd = _users.getProperty(principal.getName()).toCharArray();
+
+ return compareCharArray(pwd, password);
+ }
+
+ private boolean compareCharArray(char[] a, char[] b)
+ {
+ boolean equal = false;
+ if (a.length == b.length)
+ {
+ equal = true;
+ int index = 0;
+ while (equal && index < a.length)
+ {
+ equal = a[index] == b[index];
+ index++;
+ }
+ }
+ return equal;
+ }
+
public Map<String, AuthenticationProviderInitialiser> getMechanisms()
{
return _saslServers;