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);