diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebAuthInfo.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebAuthInfo.java index 5c178215d9..2d8e5f07bb 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebAuthInfo.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebAuthInfo.java @@ -22,6 +22,7 @@ import io.cloudbeaver.model.user.WebUserOriginInfo; import io.cloudbeaver.registry.WebAuthProviderDescriptor; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.auth.SMAuthInfo; import org.jkiss.dbeaver.model.auth.SMAuthProvider; import org.jkiss.dbeaver.model.auth.SMSession; import org.jkiss.dbeaver.model.auth.SMSessionPrincipal; @@ -41,7 +42,10 @@ public class WebAuthInfo implements SMSessionPrincipal { private final WebUser user; private final WebAuthProviderDescriptor authProvider; private String authProviderConfigurationId; - private SMSession authSession; + @NotNull + private final SMAuthInfo authInfo; + @NotNull + private final SMSession authSession; private final OffsetDateTime loginTime; private final DBWUserIdentity userIdentity; private String message; @@ -54,12 +58,14 @@ public class WebAuthInfo implements SMSessionPrincipal { @NotNull WebAuthProviderDescriptor authProvider, @NotNull DBWUserIdentity userIdentity, @NotNull SMSession authSession, + @NotNull SMAuthInfo authInfo, @NotNull OffsetDateTime loginTime ) { this.session = session; this.user = user; this.authProvider = authProvider; this.userIdentity = userIdentity; + this.authInfo = authInfo; this.authSession = authSession; this.loginTime = loginTime; } @@ -120,10 +126,16 @@ public class WebAuthInfo implements SMSessionPrincipal { return authProvider; } + @NotNull public SMSession getAuthSession() { return authSession; } + @NotNull + public SMAuthInfo getAuthInfo() { + return authInfo; + } + void closeAuth() { if (authProvider != null && authSession != null) { try { diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSession.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSession.java index 4f2a01b5a5..73f1f0b61b 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSession.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSession.java @@ -91,7 +91,7 @@ import java.util.stream.Collectors; * Is the main source of data in web application */ public class WebSession extends BaseWebSession - implements SMSession, SMCredentialsProvider, DBACredentialsProvider, IAdaptable { + implements SMSessionWithAuth, SMCredentialsProvider, DBACredentialsProvider, IAdaptable { private static final Log log = Log.getLog(WebSession.class); @@ -813,6 +813,14 @@ public class WebSession extends BaseWebSession } } + @Override + public List getAuthInfos() { + synchronized (authTokens) { + return authTokens.stream().map(WebAuthInfo::getAuthInfo).toList(); + } + } + + public List getAllAuthInfo() { synchronized (authTokens) { return new ArrayList<>(authTokens); diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionAuthProcessor.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionAuthProcessor.java index 82b5542b50..f695ab401a 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionAuthProcessor.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionAuthProcessor.java @@ -164,6 +164,7 @@ public class WebSessionAuthProcessor { authProviderDescriptor, userIdentity, authSession, + authInfo, OffsetDateTime.now() ); webAuthInfo.setAuthProviderConfigurationId(authConfiguration.getAuthProviderConfigurationId());