From 9d80804caefbe3fa69544571aeaa4b826df01ff4 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Mon, 11 May 2020 18:01:09 +0300 Subject: [PATCH 1/2] Auth API fix. Client hash algorithm simplification --- .../cloudbeaver/auth/provider/local/LocalAuthProvider.java | 2 +- .../schema/service.auth.graphqls | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java index 2b0974bfed..fb2b059393 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java @@ -62,7 +62,7 @@ public class LocalAuthProvider implements DBWAuthProvider { } public static String makeClientPasswordHash(String userName, String password) { - return SecurityUtils.makeDigest(userName, password); + return SecurityUtils.makeDigest(password); } } diff --git a/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls b/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls index 69960d28d3..84c2756421 100644 --- a/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls +++ b/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls @@ -9,13 +9,11 @@ type AuthCredentialInfo { displayName: String! description: String - editable: Boolean - identifying: Boolean # This field must be shown in admin panel admin: Boolean # This field must be shown in login form user: Boolean - possibleValues: [String]! + possibleValues: [String] encryption: AuthCredentialEncryption } @@ -27,7 +25,7 @@ type AuthProviderInfo { isDefault: Boolean - configurationParameters: [ObjectPropertyInfo]! + #configurationParameters: [ObjectPropertyInfo]! credentialParameters: [AuthCredentialInfo]! } From 633d649ac5018f730e7f01991be8408f820e5c12 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Tue, 12 May 2020 15:21:36 +0300 Subject: [PATCH 2/2] Auth API: sessionUser implementation --- .../cloudbeaver/service/auth/DBWServiceAuth.java | 2 ++ .../service/auth/WebServiceBindingAuth.java | 15 +++++---------- .../service/auth/impl/WebServiceAuthImpl.java | 13 +++++++++++++ .../web-server/CloudbeaverServer.product.launch | 5 +++++ 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/DBWServiceAuth.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/DBWServiceAuth.java index 2dd79fb11c..35e41da1aa 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/DBWServiceAuth.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/DBWServiceAuth.java @@ -34,4 +34,6 @@ public interface DBWServiceAuth extends DBWService { @WebAction() void authLogout(WebSession webSession) throws DBWebException; + @WebAction() + WebAuthInfo sessionUser(WebSession webSession) throws DBWebException; } diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebServiceBindingAuth.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebServiceBindingAuth.java index b5a6eb5a7d..3a2e1f1ce4 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebServiceBindingAuth.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebServiceBindingAuth.java @@ -36,20 +36,15 @@ public class WebServiceBindingAuth extends WebServiceBindingBase @Override public void bindWiring(DBWBindingContext model) throws DBWebException { model.getQueryType() - .dataFetcher("authLogin", env -> { - return getService(env).authLogin( - getWebSession(env), - env.getArgument("provider"), - env.getArgument("credentials")); - }) + .dataFetcher("authLogin", env -> getService(env).authLogin( + getWebSession(env), + env.getArgument("provider"), + env.getArgument("credentials"))) .dataFetcher("authLogout", env -> { getService(env).authLogout(getWebSession(env)); return true; }) - .dataFetcher("sessionUser", env -> { - Object context = env.getContext(); - throw new DBWebException("Not implemented"); - }) + .dataFetcher("sessionUser", env -> getService(env).sessionUser(getWebSession(env))) .dataFetcher("authProviders", env -> WebServiceRegistry.getInstance().getAuthProviders()) ; 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 7dddc1d2e2..1725eb52a4 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 @@ -41,6 +41,8 @@ import java.util.Map; */ public class WebServiceAuthImpl implements DBWServiceAuth { + private static final String ATTR_USER_AUTH = "user-auth-info"; + @Override public WebAuthInfo authLogin(WebSession webSession, String providerId, Map authParameters) throws DBWebException { if (!CBApplication.getInstance().getAppConfiguration().isAuthenticationEnabled()) { @@ -100,6 +102,8 @@ public class WebServiceAuthImpl implements DBWServiceAuth { authInfo.setAuthToken(authToken); authInfo.setMessage("Authenticated with " + authProvider.getLabel() + " provider"); + webSession.setAttribute(ATTR_USER_AUTH, authInfo); + return authInfo; } catch (DBException e) { throw new DBWebException("User authentication failed", e); @@ -113,4 +117,13 @@ public class WebServiceAuthImpl implements DBWServiceAuth { } webSession.setUser(null); } + + @Override + public WebAuthInfo sessionUser(WebSession webSession) throws DBWebException { + if (webSession.getUser() == null) { + return null; + } + return webSession.getAttribute(ATTR_USER_AUTH); + } + } diff --git a/server/product/web-server/CloudbeaverServer.product.launch b/server/product/web-server/CloudbeaverServer.product.launch index 547df1b452..4ef2d2d892 100644 --- a/server/product/web-server/CloudbeaverServer.product.launch +++ b/server/product/web-server/CloudbeaverServer.product.launch @@ -25,7 +25,12 @@ + + + + +