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:21 UTC
[incubator-dlab] 01/01: [DLAB-1201] Fixed scheduler issue with
token expiration
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