Merge remote-tracking branch 'origin/devel' into feat-authentication

This commit is contained in:
Wroud
2020-05-12 17:15:04 +03:00
6 changed files with 27 additions and 14 deletions
@@ -62,7 +62,7 @@ public class LocalAuthProvider implements DBWAuthProvider<LocalAuthToken> {
}
public static String makeClientPasswordHash(String userName, String password) {
return SecurityUtils.makeDigest(userName, password);
return SecurityUtils.makeDigest(password);
}
}
@@ -9,8 +9,6 @@ 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
@@ -27,7 +25,7 @@ type AuthProviderInfo {
isDefault: Boolean
configurationParameters: [ObjectPropertyInfo]!
#configurationParameters: [ObjectPropertyInfo]!
credentialParameters: [AuthCredentialInfo]!
}
@@ -34,4 +34,6 @@ public interface DBWServiceAuth extends DBWService {
@WebAction()
void authLogout(WebSession webSession) throws DBWebException;
@WebAction()
WebAuthInfo sessionUser(WebSession webSession) throws DBWebException;
}
@@ -36,20 +36,15 @@ public class WebServiceBindingAuth extends WebServiceBindingBase<DBWServiceAuth>
@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())
;
@@ -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<String, Object> 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);
}
}
@@ -25,7 +25,12 @@
<stringAttribute key="productFile" value="\web-server\DBeaverWebServer.product"/>
<setAttribute key="selected_features">
<setEntry value="io.cloudbeaver.ce.drivers.feature:default"/>
<setEntry value="io.cloudbeaver.ee.db.feature:default"/>
<setEntry value="io.cloudbeaver.ee.drivers.feature:default"/>
<setEntry value="io.cloudbeaver.product.ce.feature:default"/>
<setEntry value="io.cloudbeaver.product.ee.feature:default"/>
<setEntry value="io.cloudbeaver.sample.feature:default"/>
<setEntry value="io.cloudbeaver.server.feature:default"/>
<setEntry value="org.jkiss.dbeaver.db.feature:default"/>
<setEntry value="org.jkiss.dbeaver.runtime.feature:default"/>
</setAttribute>