From 9cda2a71b4f2f856801b8da173a4567b17f447bb Mon Sep 17 00:00:00 2001 From: Alexander Skoblikov Date: Thu, 30 Jun 2022 19:28:13 +0300 Subject: [PATCH] CB-2228 expire success auth attempt (#943) --- .../cloudbeaver/service/auth/impl/WebServiceAuthImpl.java | 2 ++ .../security/internal/CBEmbeddedSecurityController.java | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java index 7e33741caa..8701708a22 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java @@ -106,6 +106,8 @@ public class WebServiceAuthImpl implements DBWServiceAuth { return new WebAuthStatus(smAuthInfo.getAuthAttemptId(), smAuthInfo.getRedirectUrl(), smAuthInfo.getAuthStatus()); case ERROR: throw new DBWebException(smAuthInfo.getError()); + case EXPIRED: + throw new DBException("Authorization has already been processed"); default: throw new DBWebException("Unknown auth status:" + smAuthInfo.getAuthStatus()); } diff --git a/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/service/security/internal/CBEmbeddedSecurityController.java b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/service/security/internal/CBEmbeddedSecurityController.java index 3615dc139e..3a09fa2f79 100644 --- a/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/service/security/internal/CBEmbeddedSecurityController.java +++ b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/service/security/internal/CBEmbeddedSecurityController.java @@ -1067,13 +1067,18 @@ public class CBEmbeddedSecurityController implements SMAdminController, SMAuthen return SMAuthInfo.inProgress(authId, redirectUrl, authData); case ERROR: return SMAuthInfo.error(authId, authError); + case EXPIRED: + return SMAuthInfo.expired(authId); default: throw new SMException("Unknown auth status:" + smAuthStatus); } } String smToken = findTokenBySmSession(smSessionId); - return SMAuthInfo.success(authId, smToken, getTokenPermissions(smToken), authData); + SMAuthPermissions authPermissions = getTokenPermissions(smToken); + var successAuthStatus = SMAuthInfo.success(authId, smToken, authPermissions, authData); + updateAuthStatus(authId, SMAuthStatus.EXPIRED, authData, null, authPermissions.getSessionId()); + return successAuthStatus; } catch (SQLException e) { throw new DBException("Error while read auth info", e);