Added annotation scheme in config & fixed authentication exceptions.
Change-Id: I19dd25b99f34c7aa51b2f1aea04837b2337838d8
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/BasicAuthentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/BasicAuthentication.java
index 6aa2d88..793b990 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/BasicAuthentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/BasicAuthentication.java
@@ -4,8 +4,8 @@
import org.springframework.beans.factory.annotation.Autowired;
-import de.ids_mannheim.korap.authentication.framework.HttpAuthorizationHandler;
-import de.ids_mannheim.korap.authentication.framework.TransferEncoding;
+import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
+import de.ids_mannheim.korap.authentication.http.TransferEncoding;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.config.AuthenticationType;
import de.ids_mannheim.korap.config.KustvaktConfiguration;
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
index 60c3126..9c86533 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
@@ -20,11 +20,12 @@
import com.unboundid.ldap.sdk.LDAPException;
import de.ids_mannheim.korap.auditing.AuditRecord;
-import de.ids_mannheim.korap.authentication.framework.AuthorizationData;
+import de.ids_mannheim.korap.authentication.http.AuthorizationData;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.config.AuthenticationType;
import de.ids_mannheim.korap.config.BeansFactory;
import de.ids_mannheim.korap.config.KustvaktConfiguration;
+import de.ids_mannheim.korap.config.FullConfiguration;
import de.ids_mannheim.korap.config.URIParam;
import de.ids_mannheim.korap.exceptions.EmptyResultException;
import de.ids_mannheim.korap.exceptions.KustvaktException;
@@ -67,13 +68,13 @@
private EntityHandlerIface entHandler;
private AdminHandlerIface adminHandler;
private AuditingIface auditing;
- private KustvaktConfiguration config;
+ private FullConfiguration config;
private Collection userdatadaos;
private LoginCounter counter;
private ValidatorIface validator;
public KustvaktAuthenticationManager(EntityHandlerIface userdb, AdminHandlerIface admindb, EncryptionIface crypto,
- KustvaktConfiguration config, AuditingIface auditer, Collection<UserDataDbIface> userdatadaos) {
+ FullConfiguration config, AuditingIface auditer, Collection<UserDataDbIface> userdatadaos) {
this.entHandler = userdb;
this.adminHandler = admindb;
this.config = config;
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;