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;