summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/serversession/ServerAuthenticator.java
diff options
context:
space:
mode:
authorNils Schwabe2014-05-07 15:23:26 +0200
committerNils Schwabe2014-05-07 15:23:26 +0200
commitb02181e54011a01df82e4450ae884ebca920a300 (patch)
tree4ed9deb319f6ab2bacaac4cf7333919320949e2c /src/main/java/org/openslx/imagemaster/serversession/ServerAuthenticator.java
parentFix message signing (diff)
downloadmasterserver-b02181e54011a01df82e4450ae884ebca920a300.tar.gz
masterserver-b02181e54011a01df82e4450ae884ebca920a300.tar.xz
masterserver-b02181e54011a01df82e4450ae884ebca920a300.zip
Fix bug where the user list was accessed by multiple threads
Add server keys to database
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/serversession/ServerAuthenticator.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/serversession/ServerAuthenticator.java35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/main/java/org/openslx/imagemaster/serversession/ServerAuthenticator.java b/src/main/java/org/openslx/imagemaster/serversession/ServerAuthenticator.java
index 5660f2f..f82f77c 100644
--- a/src/main/java/org/openslx/imagemaster/serversession/ServerAuthenticator.java
+++ b/src/main/java/org/openslx/imagemaster/serversession/ServerAuthenticator.java
@@ -6,7 +6,9 @@ import java.util.HashMap;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import org.openslx.imagemaster.thrift.iface.AuthenticationException;
-import org.openslx.imagemaster.util.AsymMessageSign;
+import org.openslx.imagemaster.thrift.iface.ServerAuthenticationError;
+import org.openslx.imagemaster.thrift.iface.ServerAuthenticationException;
+import org.openslx.imagemaster.util.AsymMessageVerifier;
import org.openslx.imagemaster.util.RandomString;
public class ServerAuthenticator
@@ -15,20 +17,6 @@ public class ServerAuthenticator
private static Logger log = Logger.getLogger( ServerAuthenticator.class );
// map of currently authenticating servers
private static HashMap<String, String> authenticatingServers = new HashMap<String, String>();
- private static AsymMessageSign messageSign = null;
-
- /**
- * Initialize the message signer/verifier
- */
- static {
- try {
- messageSign = new AsymMessageSign( "./config/servers.jks", "password" );
- log.info( "Loaded keystore" );
- } catch ( Exception e ) {
- log.error( "Error loading the keystore", e );
- System.exit( 1 );
- }
- }
/**
* Start the server authentification.
@@ -52,7 +40,7 @@ public class ServerAuthenticator
/**
* Authenticate with the challengeResponse.
*
- * @param organization
+ * @param organization Is already verified.
* @param address
* @param challengeResponse
* @return
@@ -67,14 +55,25 @@ public class ServerAuthenticator
boolean result = false;
+ AsymMessageVerifier verifier = null;
+ try {
+ verifier = new AsymMessageVerifier( organization );
+ } catch ( Exception e ) {
+ throw new ServerAuthenticationException(ServerAuthenticationError.INVALID_ORGANIZATION, "Organization not found.");
+ }
+
try {
- result = messageSign.verifyMessage( bytes, authenticatingServers.get( organization ).getBytes() , "uni-freiburg.de" );
+ result = verifier.verifyMessage( bytes, authenticatingServers.get( organization ).getBytes() , "uni-freiburg.de" );
} catch ( Exception e ) {
log.error( "Error while verifying message", e );
+ throw new ServerAuthenticationException(ServerAuthenticationError.GENERIC_ERROR, "Could not verfiy key.");
}
if ( !result ) {
- throw new AuthenticationException();
+ /*
+ * TODO: new error for invalid key
+ */
+ throw new ServerAuthenticationException(ServerAuthenticationError.GENERIC_ERROR, "Could not verfiy key.");
}
log.info( "Server of organinzation '" + organization + " authenticated." );