diff --git a/.classpath b/.classpath
index 7bdf471..96752de 100644
--- a/.classpath
+++ b/.classpath
@@ -10,7 +10,7 @@
-
+
diff --git a/src/fr/devinsy/kiss4web/SimpleSecurityAgent.java b/src/fr/devinsy/kiss4web/SimpleSecurityAgent.java
index ac83328..e5cd2cd 100644
--- a/src/fr/devinsy/kiss4web/SimpleSecurityAgent.java
+++ b/src/fr/devinsy/kiss4web/SimpleSecurityAgent.java
@@ -7,6 +7,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import fr.devinsy.util.StringList;
/**
*
@@ -59,6 +60,35 @@ public class SimpleSecurityAgent
return (result);
}
+ /**
+ * This method builds a key from keys and a secret key.
+ */
+ public String computeAuth(final String... keys)
+ {
+ String result;
+
+ if (keys == null)
+ {
+ result = null;
+ }
+ else
+ {
+ // Add a secret key to the key list.
+ String[] targetKeys = new String[keys.length + 1];
+ for (int keyIndex = 0; keyIndex < keys.length; keyIndex++)
+ {
+ targetKeys[keyIndex] = keys[keyIndex];
+ }
+ targetKeys[keys.length] = this.secretKey;
+
+ //
+ result = md5sum(targetKeys);
+ }
+
+ //
+ return (result);
+ }
+
/**
* Check authentication and refresh it (reset countdown).
*/
@@ -75,7 +105,7 @@ public class SimpleSecurityAgent
{
result = false;
}
- else if (auth.equals(computeAuth(accountId, userId, request.getRemoteAddr(), this.secretKey)))
+ else if (auth.equals(computeAuth(accountId, userId, request.getRemoteAddr())))
{
result = true;
@@ -91,6 +121,29 @@ public class SimpleSecurityAgent
return (result);
}
+ /**
+ *
+ * @param source
+ * @return
+ */
+ public String md5sumWithSecret(final String source)
+ {
+ String result;
+
+ if (source == null)
+ {
+ result = null;
+ }
+ else
+ {
+ String key = source + this.secretKey;
+ result = md5sum(key);
+ }
+
+ //
+ return result;
+ }
+
/**
*
*/
@@ -108,7 +161,7 @@ public class SimpleSecurityAgent
{
// Refresh cookie.
int duration = 60 * 60;
- String auth = computeAuth(String.valueOf(accountId), userId, request.getRemoteAddr(), this.secretKey);
+ String auth = computeAuth(String.valueOf(accountId), userId, request.getRemoteAddr());
response.addCookie(CookieHelper.buildCookie(this.authLabel, auth, duration));
response.addCookie(CookieHelper.buildCookie(this.accountIdLabel, accountId, duration));
@@ -133,24 +186,26 @@ public class SimpleSecurityAgent
/**
*
*/
- static public String computeAuth(final String key1, final String key2, final String key3, final String key4)
+ static public String md5sum(final String... keys)
{
String result;
- result = md5sum(key1 + key2 + key3 + key4);
+ if (keys == null)
+ {
+ result = null;
+ }
+ else
+ {
+ //
+ StringList targetKey = new StringList();
+ for (String key : keys)
+ {
+ targetKey.append(key);
+ }
- //
- return (result);
- }
-
- /**
- *
- */
- static String md5sum(final String source)
- {
- String result;
-
- result = DigestUtils.md5Hex(source);
+ //
+ result = DigestUtils.md5Hex(targetKey.toString());
+ }
//
return (result);