You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by of...@apache.org on 2019/10/21 14:42:20 UTC

[incubator-dlab] branch DLAB-1201 created (now 1ecb8ae)

This is an automated email from the ASF dual-hosted git repository.

ofuks pushed a change to branch DLAB-1201
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git.


      at 1ecb8ae  [DLAB-1201] Fixed scheduler issue with token expiration

This branch includes the following new commits:

     new 1ecb8ae  [DLAB-1201] Fixed scheduler issue with token expiration

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org


[incubator-dlab] 01/01: [DLAB-1201] Fixed scheduler issue with token expiration

Posted by of...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ofuks pushed a commit to branch DLAB-1201
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 1ecb8ae87c04c20dba80be7a9571517340e95b02
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Mon Oct 21 17:41:52 2019 +0300

    [DLAB-1201] Fixed scheduler issue with token expiration
---
 .../java/com/epam/dlab/backendapi/service/KeycloakService.java |  1 +
 .../com/epam/dlab/backendapi/service/KeycloakServiceImpl.java  | 10 ++++++++++
 .../java/com/epam/dlab/backendapi/service/SecurityService.java |  1 +
 .../com/epam/dlab/backendapi/service/SecurityServiceImpl.java  |  6 ++++++
 .../dlab/backendapi/service/impl/EnvironmentServiceImpl.java   |  2 +-
 5 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/KeycloakService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/KeycloakService.java
index ce682bb..e55b0cc 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/KeycloakService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/KeycloakService.java
@@ -6,4 +6,5 @@ public interface KeycloakService {
 	AccessTokenResponse getToken(String code);
 	AccessTokenResponse refreshToken(String refreshToken);
 	AccessTokenResponse generateAccessToken(String refreshToken);
+	AccessTokenResponse generateServiceAccountToken();
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/KeycloakServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/KeycloakServiceImpl.java
index 8458d85..b7c508a 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/KeycloakServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/KeycloakServiceImpl.java
@@ -51,6 +51,11 @@ public class KeycloakServiceImpl implements KeycloakService {
 		return tokenResponse;
 	}
 
+	@Override
+	public AccessTokenResponse generateServiceAccountToken() {
+		return requestToken(serviceAccountRequestForm());
+	}
+
 	private AccessTokenResponse requestToken(Form requestForm) {
 		final String credentials = Base64.encodeAsString(String.join(":", conf.getResource(),
 				String.valueOf(conf.getCredentials().get("secret"))));
@@ -78,4 +83,9 @@ public class KeycloakServiceImpl implements KeycloakService {
 				.param("grant_type", "refresh_token")
 				.param("refresh_token", refreshToken);
 	}
+
+	private Form serviceAccountRequestForm() {
+		return new Form()
+				.param("grant_type", "client_credentials");
+	}
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/SecurityService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/SecurityService.java
index 2438e24..9954cff 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/SecurityService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/SecurityService.java
@@ -5,4 +5,5 @@ import com.epam.dlab.auth.UserInfo;
 public interface SecurityService {
 	UserInfo getUserInfo(String code);
 	UserInfo getUserInfoOffline(String username);
+	UserInfo getServiceAccountInfo(String username);
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/SecurityServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/SecurityServiceImpl.java
index 9b17d91..b43128d 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/SecurityServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/SecurityServiceImpl.java
@@ -36,4 +36,10 @@ public class SecurityServiceImpl implements SecurityService {
 						accessTokenResponse.getToken()))
 				.orElseThrow(() -> new DlabException("Can not find token for user " + username));
 	}
+
+	@Override
+	public UserInfo getServiceAccountInfo(String username) {
+		AccessTokenResponse accessTokenResponse = keycloakService.generateServiceAccountToken();
+		return new UserInfo(username, accessTokenResponse.getToken());
+	}
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
index dc18fb2..2125398 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
@@ -194,7 +194,7 @@ public class EnvironmentServiceImpl implements EnvironmentService {
 	}
 
 	private void stopNotebook(UserInstanceDTO instance) {
-		final UserInfo userInfo = securityService.getUserInfoOffline(instance.getUser());
+		final UserInfo userInfo = securityService.getServiceAccountInfo(instance.getUser());
 		exploratoryService.stop(userInfo, instance.getExploratoryName());
 	}
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org