diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/controller/UserController.java b/rest-api/src/main/java/lcsb/mapviewer/api/controller/UserController.java
index 47feaae5d86e2e2da0c31b0419cce1df319bcd29..1313da0dc02deb9c5c2faaced33df1b7a2348903 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/controller/UserController.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/controller/UserController.java
@@ -1,5 +1,8 @@
 package lcsb.mapviewer.api.controller;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
@@ -10,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import lcsb.mapviewer.api.BaseController;
 import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.services.SecurityException;
 import lcsb.mapviewer.services.interfaces.IUserService;
 import lcsb.mapviewer.services.view.AuthenticationToken;
 
@@ -22,12 +26,25 @@ public class UserController extends BaseController {
 	private IUserService userService;
 
 	@RequestMapping(value = "/login", method = { RequestMethod.GET, RequestMethod.POST }, produces = { MediaType.APPLICATION_JSON_VALUE })
-	public AuthenticationToken greeting(@RequestParam(value = "login", defaultValue = Configuration.ANONYMOUS_LOGIN) String login,
+	public AuthenticationToken login(@RequestParam(value = "login", defaultValue = Configuration.ANONYMOUS_LOGIN) String login,
 			@RequestParam(value = "password", required = false) String password) {
 		AuthenticationToken token = userService.login(login, password);
 		return token;
 	}
 
+	@RequestMapping(value = "/tokenStatus", method = { RequestMethod.GET, RequestMethod.POST }, produces = { MediaType.APPLICATION_JSON_VALUE })
+	public AuthenticationToken tokenSatus(@RequestParam(value = "token", required = false) String token) throws SecurityException {
+		return userService.getToken(token);
+	}
+
+	@RequestMapping(value = "/logout", method = { RequestMethod.GET, RequestMethod.POST }, produces = { MediaType.APPLICATION_JSON_VALUE })
+	public Map<String, String> logout(@RequestParam(value = "token", required = false) String token) throws SecurityException {
+		userService.logout(token);
+		Map<String, String> response = new HashMap<>();
+		response.put("status", "OK");
+		return response;
+	}
+
 	/**
 	 * @return the userService
 	 * @see #userService
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java
index f382db1c4672865c19e5edbb96d406e3cf0658ed..590a3c36bda12c4a64b12bf5e734a7de571a5ec3 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java
@@ -540,10 +540,11 @@ public class UserService implements IUserService {
 		return result;
 	}
 
-	public void logout(AuthenticationToken result) {
+	@Override
+	public void logout(AuthenticationToken token) {
 		synchronized (authenticationTokens) {
-			authenticationTokens.remove(result.getId());
-			authenticatedUsers.remove(result);
+			authenticationTokens.remove(token.getId());
+			authenticatedUsers.remove(token);
 		}
 	}
 
@@ -551,4 +552,10 @@ public class UserService implements IUserService {
 	public boolean userHasPrivilege(AuthenticationToken token, PrivilegeType type, Object object) {
 		return userHasPrivilege(getUserByToken(token), type, object);
 	}
+
+	@Override
+	public void logout(String tokenString) throws SecurityException {
+		AuthenticationToken token = getToken(tokenString);
+		logout(token);
+	}
 }
diff --git a/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java b/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java
index 686f40753222745cfe2195af378c5a9a65317ff9..3531370b76f3d3c106d3a7ef35bb81affe88f22c 100644
--- a/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java
@@ -249,4 +249,8 @@ public interface IUserService {
 	AuthenticationToken getToken(String token) throws SecurityException;
 
 	boolean userHasPrivilege(AuthenticationToken token, PrivilegeType type, Object object);
+
+	void logout(String tokenString) throws SecurityException;
+
+	void logout(AuthenticationToken token);
 }