Improve design code.
This commit is contained in:
parent
573d8d53fa
commit
535288c26c
2 changed files with 72 additions and 17 deletions
|
@ -10,7 +10,7 @@
|
||||||
<classpathentry kind="lib" path="lib/slf4j-api-1.7.5.jar"/>
|
<classpathentry kind="lib" path="lib/slf4j-api-1.7.5.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/slf4j-log4j12-1.7.5.jar"/>
|
<classpathentry kind="lib" path="lib/slf4j-log4j12-1.7.5.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/devinsy-utils-0.2.0.jar"/>
|
<classpathentry kind="lib" path="lib/devinsy-utils-0.2.0.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/commons-codec-1.8.jar"/>
|
<classpathentry kind="lib" path="lib/commons-codec-1.8.jar" sourcepath="lib/commons-codec-1.8-sources.jar"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
|
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v7.0">
|
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v7.0">
|
||||||
<attributes>
|
<attributes>
|
||||||
|
|
|
@ -7,6 +7,7 @@ import org.apache.commons.codec.digest.DigestUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.util.StringList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -59,6 +60,35 @@ public class SimpleSecurityAgent
|
||||||
return (result);
|
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).
|
* Check authentication and refresh it (reset countdown).
|
||||||
*/
|
*/
|
||||||
|
@ -75,7 +105,7 @@ public class SimpleSecurityAgent
|
||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
else if (auth.equals(computeAuth(accountId, userId, request.getRemoteAddr(), this.secretKey)))
|
else if (auth.equals(computeAuth(accountId, userId, request.getRemoteAddr())))
|
||||||
{
|
{
|
||||||
result = true;
|
result = true;
|
||||||
|
|
||||||
|
@ -91,6 +121,29 @@ public class SimpleSecurityAgent
|
||||||
return (result);
|
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.
|
// Refresh cookie.
|
||||||
int duration = 60 * 60;
|
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.authLabel, auth, duration));
|
||||||
response.addCookie(CookieHelper.buildCookie(this.accountIdLabel, accountId, 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;
|
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);
|
result = DigestUtils.md5Hex(targetKey.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static String md5sum(final String source)
|
|
||||||
{
|
|
||||||
String result;
|
|
||||||
|
|
||||||
result = DigestUtils.md5Hex(source);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
return (result);
|
return (result);
|
||||||
|
|
Loading…
Reference in a new issue