diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/BaseController.java b/application/src/main/java/com/indiscale/fdo/manager/service/BaseController.java
index 4db49832286867f315f6d115b355e420cbcd6c7f..58b5dc60ab08395c48abd97893f80443539ab8ea 100644
--- a/application/src/main/java/com/indiscale/fdo/manager/service/BaseController.java
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/BaseController.java
@@ -6,7 +6,8 @@ import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
 import com.indiscale.fdo.manager.api.Manager;
 import com.indiscale.fdo.manager.service.api.model.Error;
 import com.indiscale.fdo.manager.service.api.model.Links;
-import com.indiscale.fdo.manager.service.authentication.AuthToken;
+import com.indiscale.fdo.manager.service.authentication.Authenticator;
+import com.indiscale.fdo.manager.service.authentication.AuthenticatorProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.hateoas.IanaLinkRelations;
 import org.springframework.http.ResponseEntity;
@@ -18,7 +19,7 @@ public class BaseController {
 
   @Autowired ManagerPool managerPool;
 
-  @Autowired AuthToken authToken;
+  @Autowired AuthenticatorProvider authenticator;
 
   @Autowired OperationsLoggerFactory operationsLoggerFactory;
 
@@ -35,8 +36,8 @@ public class BaseController {
     return managerPool.getManager();
   }
 
-  protected String getToken() {
-    return authToken.getToken();
+  protected Authenticator getAuthenticator() {
+    return authenticator.getAuthenticator();
   }
 
   @ExceptionHandler(ResponseStatusException.class)
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/HeaderInterceptorConfig.java b/application/src/main/java/com/indiscale/fdo/manager/service/HeaderInterceptorConfig.java
index ecc56055298446c748274174d249dc2638c835b7..868131bf54b3590a28f52e32e13ee1c24b467402 100644
--- a/application/src/main/java/com/indiscale/fdo/manager/service/HeaderInterceptorConfig.java
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/HeaderInterceptorConfig.java
@@ -1,7 +1,7 @@
 package com.indiscale.fdo.manager.service;
 
-import com.indiscale.fdo.manager.service.authentication.AuthToken;
-import com.indiscale.fdo.manager.service.authentication.AuthTokenInterceptor;
+import com.indiscale.fdo.manager.service.authentication.AuthenticationInterceptor;
+import com.indiscale.fdo.manager.service.authentication.AuthenticatorProvider;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Scope;
@@ -15,17 +15,17 @@ public class HeaderInterceptorConfig implements WebMvcConfigurer {
 
   @Override
   public void addInterceptors(final InterceptorRegistry registry) {
-    registry.addInterceptor(authTokenInterceptor());
+    registry.addInterceptor(authenticationInterceptor());
   }
 
   @Bean
-  AuthTokenInterceptor authTokenInterceptor() {
-    return new AuthTokenInterceptor(authToken());
+  AuthenticationInterceptor authenticationInterceptor() {
+    return new AuthenticationInterceptor(authenticator());
   }
 
   @Bean
   @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
-  AuthToken authToken() {
-    return new AuthToken();
+  AuthenticatorProvider authenticator() {
+    return new AuthenticatorProvider();
   }
 }
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthToken.java b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthToken.java
deleted file mode 100644
index 0f0f36d8a513b285c8a527efec502725af6c3b8b..0000000000000000000000000000000000000000
--- a/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthToken.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.indiscale.fdo.manager.service.authentication;
-
-public class AuthToken {
-
-  private String token;
-
-  public void setToken(String token) {
-    this.token = token;
-  }
-
-  public String getToken() {
-    return token;
-  }
-
-  @Override
-  public String toString() {
-    return "AuthToken[" + token + "]";
-  }
-}
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthTokenInterceptor.java b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticationInterceptor.java
similarity index 56%
rename from application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthTokenInterceptor.java
rename to application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticationInterceptor.java
index c0adfe091d3a2bcc91bf0b4668a231e93be5a890..0dd8e204ff3ead155df7614071b4877ce38a1a3d 100644
--- a/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthTokenInterceptor.java
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticationInterceptor.java
@@ -8,26 +8,28 @@ import org.springframework.context.annotation.ScopedProxyMode;
 import org.springframework.web.context.WebApplicationContext;
 import org.springframework.web.servlet.HandlerInterceptor;
 
-public class AuthTokenInterceptor implements HandlerInterceptor {
-  private final AuthToken authToken;
+public class AuthenticationInterceptor implements HandlerInterceptor {
+  private AuthenticatorProvider authenticator;
 
   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
       throws Exception {
-    String header = request.getHeader("authentication");
+    String header = request.getHeader("authorization");
     if (header != null && header.startsWith("Bearer ")) {
-      authToken.setToken(header.substring(7));
+      authenticator.setAuthenticator(new AuthenticationToken(header.substring(7)));
+    } else if (header != null && header.startsWith("Basic ")) {
+      authenticator.setAuthenticator(new BasicCredentials(header.substring(6)));
     }
     return true;
   }
 
-  public AuthTokenInterceptor(AuthToken authToken) {
-    this.authToken = authToken;
+  public AuthenticationInterceptor(AuthenticatorProvider authenticator) {
+    this.authenticator = authenticator;
   }
 
   @Bean
   @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
-  AuthToken authToken() {
-    return new AuthToken();
+  AuthenticatorProvider authenticator() {
+    return new AuthenticatorProvider();
   }
 }
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticationToken.java b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticationToken.java
new file mode 100644
index 0000000000000000000000000000000000000000..023bfe4e8b81fbf5e0f710e889628a553d70ebda
--- /dev/null
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticationToken.java
@@ -0,0 +1,23 @@
+package com.indiscale.fdo.manager.service.authentication;
+
+import com.indiscale.fdo.manager.api.RepositoryConnection;
+import com.indiscale.fdo.manager.api.TokenAuthenticationInfo;
+
+public class AuthenticationToken implements Authenticator {
+
+  public AuthenticationToken(String token) {
+    this.token = token;
+  }
+
+  private String token;
+
+  @Override
+  public String toString() {
+    return "AuthToken[" + token + "]";
+  }
+
+  @Override
+  public void authenticateWith(RepositoryConnection repository) {
+    repository.setTokenAuthenticationInfo(new TokenAuthenticationInfo(token));
+  }
+}
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/authentication/Authenticator.java b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/Authenticator.java
new file mode 100644
index 0000000000000000000000000000000000000000..dff360a46e9946d8fb3bcab1efd10ab731a1c60a
--- /dev/null
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/Authenticator.java
@@ -0,0 +1,7 @@
+package com.indiscale.fdo.manager.service.authentication;
+
+import com.indiscale.fdo.manager.api.RepositoryConnection;
+
+public interface Authenticator {
+  public void authenticateWith(RepositoryConnection repository);
+}
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticatorProvider.java b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticatorProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9459d1d0e6922be937befdeb0e6f449a18cd7487
--- /dev/null
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/AuthenticatorProvider.java
@@ -0,0 +1,13 @@
+package com.indiscale.fdo.manager.service.authentication;
+
+public class AuthenticatorProvider {
+  private Authenticator authenticator;
+
+  public Authenticator getAuthenticator() {
+    return authenticator;
+  }
+
+  public void setAuthenticator(Authenticator authenticator) {
+    this.authenticator = authenticator;
+  }
+}
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/authentication/BasicCredentials.java b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/BasicCredentials.java
new file mode 100644
index 0000000000000000000000000000000000000000..be566f0a0e6e4cca30ccd5d523b6e1b5a7eb4407
--- /dev/null
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/authentication/BasicCredentials.java
@@ -0,0 +1,30 @@
+package com.indiscale.fdo.manager.service.authentication;
+
+import com.indiscale.fdo.manager.api.CredentialsAuthenticationInfo;
+import com.indiscale.fdo.manager.api.RepositoryConnection;
+import java.util.Base64;
+
+public class BasicCredentials implements Authenticator {
+
+  private String username;
+  private String password;
+
+  private static String[] decodeAndSplit(String encoded) {
+    return new String(Base64.getDecoder().decode(encoded.getBytes())).split(":", 2);
+  }
+
+  public BasicCredentials(String encoded) {
+    this(decodeAndSplit(encoded));
+  }
+
+  private BasicCredentials(String... components) {
+    this.username = components[0];
+    this.password = components[1];
+  }
+
+  @Override
+  public void authenticateWith(RepositoryConnection repository) {
+    repository.setCredentialsAuthenticationInfo(
+        new CredentialsAuthenticationInfo(username, password));
+  }
+}
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
index c2943b358e414dabb39ddfc3a081878f164b2a0c..cb81440a774ae961eeb9a6852734bb451229fb52 100644
--- a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
@@ -18,7 +18,6 @@ import com.indiscale.fdo.manager.api.Manager;
 import com.indiscale.fdo.manager.api.MetadataProfile;
 import com.indiscale.fdo.manager.api.PidUnresolvableException;
 import com.indiscale.fdo.manager.api.RepositoryConnection;
-import com.indiscale.fdo.manager.api.TokenAuthenticationInfo;
 import com.indiscale.fdo.manager.api.UnknownRepositoryException;
 import com.indiscale.fdo.manager.api.ValidationException;
 import com.indiscale.fdo.manager.service.BaseController;
@@ -109,8 +108,8 @@ public class FDOApiImpl extends BaseController implements FdoApi {
     try (Manager manager = getManager()) {
       RepositoryConnection repository =
           manager.getRepositoryRegistry().createRepositoryConnection(repositories.getFdo());
-      if (getToken() != null && !getToken().isBlank()) {
-        repository.setTokenAuthenticationInfo(new TokenAuthenticationInfo(getToken()));
+      if (getAuthenticator() != null) {
+        getAuthenticator().authenticateWith(repository);
       }
       FdoProfile profile = manager.getDefaultProfile();
       Data data = null;
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/hello/InfoImpl.java b/application/src/main/java/com/indiscale/fdo/manager/service/hello/InfoImpl.java
index 8e95008a6841d87b67c2e4a5b3196c70e3567bae..c142c88647edf22356e4c6453946d1f08ca0e52d 100644
--- a/application/src/main/java/com/indiscale/fdo/manager/service/hello/InfoImpl.java
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/hello/InfoImpl.java
@@ -4,8 +4,6 @@ import com.indiscale.fdo.manager.service.BaseController;
 import com.indiscale.fdo.manager.service.api.model.GetInfo200Response;
 import com.indiscale.fdo.manager.service.api.model.Info;
 import com.indiscale.fdo.manager.service.api.operation.InfoApi;
-import com.indiscale.fdo.manager.service.authentication.AuthToken;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.CrossOrigin;
@@ -15,8 +13,6 @@ import org.springframework.web.bind.annotation.RestController;
 @CrossOrigin(origins = {"${react-dev-server}"})
 public class InfoImpl extends BaseController implements InfoApi {
 
-  @Autowired AuthToken authToken;
-
   @Value("${fdo.service.version}")
   private String fdoServiceVersion;
 
@@ -25,7 +21,6 @@ public class InfoImpl extends BaseController implements InfoApi {
 
   @Override
   public ResponseEntity<GetInfo200Response> getInfo() {
-    System.out.println("authToken: " + authToken);
     Info data = new Info().fdoServiceVersion(fdoServiceVersion).fdoSdkVersion(fdoSdkVersion);
     return ResponseEntity.ok(new GetInfo200Response(data));
   }