Added annotation scheme in config & fixed authentication exceptions.

Change-Id: I19dd25b99f34c7aa51b2f1aea04837b2337838d8
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/http/AuthorizationData.java b/full/src/main/java/de/ids_mannheim/korap/authentication/http/AuthorizationData.java
index 13715a7..14077e6 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/http/AuthorizationData.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/http/AuthorizationData.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.authentication.framework;
+package de.ids_mannheim.korap.authentication.http;
 
 import de.ids_mannheim.korap.config.AuthenticationType;
 import lombok.Getter;
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpAuthorizationHandler.java b/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpAuthorizationHandler.java
index 22bd096..f25bd96 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpAuthorizationHandler.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpAuthorizationHandler.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.authentication.framework;
+package de.ids_mannheim.korap.authentication.http;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -19,7 +19,7 @@
 
     @Autowired
     private TransferEncoding transferEncoding;
-
+    
     public String createAuthorizationHeader (AuthenticationType type,
             String username, String password) throws KustvaktException {
         ParameterChecker.checkStringValue(username, "username");
@@ -36,7 +36,7 @@
 
         String[] values = authorizationHeader.split(" ");
         if (values.length != 2) {
-            throw new KustvaktException(StatusCodes.CLIENT_AUTHORIZATION_FAILED,
+            throw new KustvaktException(StatusCodes.AUTHENTICATION_FAILED,
                     "Cannot parse authorization header value "
                             + authorizationHeader
                             + ". Use this format: [authentication "
@@ -51,13 +51,11 @@
         return data;
     }
 
-    public AuthorizationData parseToken (AuthorizationData data) throws KustvaktException {
+    public AuthorizationData parseToken (AuthorizationData data)
+            throws KustvaktException {
         String[] credentials = transferEncoding.decodeBase64(data.getToken());
         data.setUsername(credentials[0]);
         data.setPassword(credentials[1]);
         return data;
     }
-    
-    
-    
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpUnauthorizedHandler.java b/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpUnauthorizedHandler.java
new file mode 100644
index 0000000..026b623
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpUnauthorizedHandler.java
@@ -0,0 +1,31 @@
+package de.ids_mannheim.korap.authentication.http;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import de.ids_mannheim.korap.config.FullConfiguration;
+
+/** Implementation of HTTP authentication scheme (see RFC 7253 and 7617)
+ *  for server creating responses with status 401 Unauthorized and 
+ *  WWW-Authenticate header to unauthenticated requests.
+ *    
+ * @author margaretha
+ *
+ */
+@Component
+public class HttpUnauthorizedHandler {
+    @Autowired
+    private FullConfiguration config;
+
+    public Response createUnauthenticatedResponse (String notification) {
+        return Response.status(Response.Status.UNAUTHORIZED)
+                .header(HttpHeaders.WWW_AUTHENTICATE,
+                        config.getAuthenticationScheme()
+                                + " realm=\"Kustvakt\"")
+                .entity(notification)
+                .build();
+    }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/http/TransferEncoding.java b/full/src/main/java/de/ids_mannheim/korap/authentication/http/TransferEncoding.java
index 70246d0..c4120df 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/http/TransferEncoding.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/http/TransferEncoding.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.authentication.framework;
+package de.ids_mannheim.korap.authentication.http;
 
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.stereotype.Component;