diff --git a/pom.xml b/pom.xml index 8c41bd2b67df7a812a19772297be0cd4f7819da4..42279be9f3be99fb3d2d7d316e8549901aadeba8 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,7 @@ <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> - <version>1.4.1</version> + <version>1.5.3</version> </dependency> <dependency> <groupId>junit</groupId> diff --git a/src/main/java/caosdb/server/CaosAuthenticator.java b/src/main/java/caosdb/server/CaosAuthenticator.java index 021f4ab7d4541756df63fa4bf6878fa603179679..f2f5ebc42f84857a00540b720328a7e4de585352 100644 --- a/src/main/java/caosdb/server/CaosAuthenticator.java +++ b/src/main/java/caosdb/server/CaosAuthenticator.java @@ -60,15 +60,16 @@ public class CaosAuthenticator extends Authenticator { if (sessionToken != null) { subject.login(sessionToken); } + + // anonymous users + if (!subject.isAuthenticated() + && CaosDBServer.getServerProperty(ServerProperties.KEY_AUTH_OPTIONAL) + .equalsIgnoreCase("TRUE")) { + subject.login(AuthenticationUtils.ANONYMOUS_USER); + } } catch (AuthenticationException e) { logger.info("LOGIN_FAILED", e); } - // anonymous users - if (!subject.isAuthenticated() - && CaosDBServer.getServerProperty(ServerProperties.KEY_AUTH_OPTIONAL) - .equalsIgnoreCase("TRUE")) { - subject.login(AuthenticationUtils.ANONYMOUS_USER); - } return subject.isAuthenticated(); } diff --git a/src/main/java/caosdb/server/CaosDBServer.java b/src/main/java/caosdb/server/CaosDBServer.java index be705aa58eef7ba045391322d24e267524ebee05..2134734103c64dfcb21de7836c735117091a0062 100644 --- a/src/main/java/caosdb/server/CaosDBServer.java +++ b/src/main/java/caosdb/server/CaosDBServer.java @@ -19,50 +19,6 @@ */ package caosdb.server; -import caosdb.server.accessControl.AnonymousRealm; -import caosdb.server.accessControl.AuthenticationUtils; -import caosdb.server.accessControl.CaosDBAuthorizingRealm; -import caosdb.server.accessControl.CaosDBDefaultRealm; -import caosdb.server.accessControl.OneTimeAuthenticationToken; -import caosdb.server.accessControl.SessionToken; -import caosdb.server.accessControl.SessionTokenRealm; -import caosdb.server.database.BackendTransaction; -import caosdb.server.database.access.Access; -import caosdb.server.database.backend.transaction.RetrieveDatatypes; -import caosdb.server.database.misc.TransactionBenchmark; -import caosdb.server.datatype.AbstractDatatype; -import caosdb.server.entity.EntityInterface; -import caosdb.server.entity.Role; -import caosdb.server.entity.container.Container; -import caosdb.server.logging.RequestErrorLogMessage; -import caosdb.server.resource.AuthenticationResource; -import caosdb.server.resource.DefaultResource; -import caosdb.server.resource.EntityOwnerResource; -import caosdb.server.resource.EntityPermissionsResource; -import caosdb.server.resource.FileSystemResource; -import caosdb.server.resource.InfoResource; -import caosdb.server.resource.LogoutResource; -import caosdb.server.resource.PermissionRulesResource; -import caosdb.server.resource.RolesResource; -import caosdb.server.resource.ScriptingResource; -import caosdb.server.resource.ServerLogsResource; -import caosdb.server.resource.ServerPropertiesResource; -import caosdb.server.resource.SharedFileResource; -import caosdb.server.resource.ThumbnailsResource; -import caosdb.server.resource.UserResource; -import caosdb.server.resource.UserRolesResource; -import caosdb.server.resource.Webinterface; -import caosdb.server.resource.WebinterfaceBuildNumber; -import caosdb.server.resource.transaction.EntityNamesResource; -import caosdb.server.resource.transaction.EntityResource; -import caosdb.server.terminal.CaosDBTerminal; -import caosdb.server.terminal.StatsPanel; -import caosdb.server.terminal.SystemErrPanel; -import caosdb.server.transaction.ChecksumUpdater; -import caosdb.server.utils.FileUtils; -import caosdb.server.utils.Initialization; -import caosdb.server.utils.NullPrintStream; -import caosdb.server.utils.Utils; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; @@ -79,10 +35,9 @@ import java.util.logging.LogRecord; import org.apache.shiro.SecurityUtils; import org.apache.shiro.config.Ini; import org.apache.shiro.config.Ini.Section; -import org.apache.shiro.config.IniSecurityManagerFactory; +import org.apache.shiro.env.BasicIniEnvironment; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; -import org.apache.shiro.util.Factory; import org.apache.shiro.util.ThreadContext; import org.quartz.JobDetail; import org.quartz.Scheduler; @@ -111,6 +66,50 @@ import org.restlet.routing.Variable; import org.restlet.util.Series; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import caosdb.server.accessControl.AnonymousRealm; +import caosdb.server.accessControl.AuthenticationUtils; +import caosdb.server.accessControl.CaosDBAuthorizingRealm; +import caosdb.server.accessControl.CaosDBDefaultRealm; +import caosdb.server.accessControl.OneTimeAuthenticationToken; +import caosdb.server.accessControl.SessionToken; +import caosdb.server.accessControl.SessionTokenRealm; +import caosdb.server.database.BackendTransaction; +import caosdb.server.database.access.Access; +import caosdb.server.database.backend.transaction.RetrieveDatatypes; +import caosdb.server.database.misc.TransactionBenchmark; +import caosdb.server.datatype.AbstractDatatype; +import caosdb.server.entity.EntityInterface; +import caosdb.server.entity.Role; +import caosdb.server.entity.container.Container; +import caosdb.server.logging.RequestErrorLogMessage; +import caosdb.server.resource.AuthenticationResource; +import caosdb.server.resource.DefaultResource; +import caosdb.server.resource.EntityOwnerResource; +import caosdb.server.resource.EntityPermissionsResource; +import caosdb.server.resource.FileSystemResource; +import caosdb.server.resource.InfoResource; +import caosdb.server.resource.LogoutResource; +import caosdb.server.resource.PermissionRulesResource; +import caosdb.server.resource.RolesResource; +import caosdb.server.resource.ScriptingResource; +import caosdb.server.resource.ServerLogsResource; +import caosdb.server.resource.ServerPropertiesResource; +import caosdb.server.resource.SharedFileResource; +import caosdb.server.resource.ThumbnailsResource; +import caosdb.server.resource.UserResource; +import caosdb.server.resource.UserRolesResource; +import caosdb.server.resource.Webinterface; +import caosdb.server.resource.WebinterfaceBuildNumber; +import caosdb.server.resource.transaction.EntityNamesResource; +import caosdb.server.resource.transaction.EntityResource; +import caosdb.server.terminal.CaosDBTerminal; +import caosdb.server.terminal.StatsPanel; +import caosdb.server.terminal.SystemErrPanel; +import caosdb.server.transaction.ChecksumUpdater; +import caosdb.server.utils.FileUtils; +import caosdb.server.utils.Initialization; +import caosdb.server.utils.NullPrintStream; +import caosdb.server.utils.Utils; public class CaosDBServer extends Application { @@ -225,6 +224,8 @@ public class CaosDBServer extends Application { INSECURE = true; } } + INSECURE = INSECURE && isDebugMode(); // only allow insecure in debug mode + START_BACKEND = START_BACKEND || !isDebugMode(); // always start backend if // not in debug mode } public static Ini getShiroConfig() { @@ -245,67 +246,46 @@ public class CaosDBServer extends Application { "securityManager.subjectDAO.sessionStorageEvaluator.sessionStorageEnabled", "false"); return config; } - - /** - * This main method starts up a web application that will listen on a port defined in the config - * file. - * - * @param args One option temporarily (for testing) available: silent: If present: disable - * System.out-stream (stream to a NullPrintStream). This makes the response of the database - * amazingly faster. - * @throws IOException - * @throws FileNotFoundException - * @throws SecurityException - * @throws Exception If problems occur. - */ - public static void main(final String[] args) - throws SecurityException, FileNotFoundException, IOException { - try { - init(args); - initScheduler(); - initServerProperties(); - initTimeZone(); - OneTimeAuthenticationToken.init(); - } catch (Exception e1) { - logger.error("Could not configure the server.", e1); - System.exit(1); - } - - INSECURE = INSECURE && isDebugMode(); // only allow insecure in debug mode - START_BACKEND = START_BACKEND || !isDebugMode(); // always start backend if - // not in debug mode - + + + public static void initShiro(Ini config) { + BasicIniEnvironment env = new BasicIniEnvironment(config); + final SecurityManager securityManager = env.getSecurityManager(); + SecurityUtils.setSecurityManager(securityManager); + } + + public static void initShiro() { // init Shiro (user authentication/authorization and session management) final Ini config = getShiroConfig(); - final Factory<SecurityManager> factory = new IniSecurityManagerFactory(config); - final SecurityManager securityManager = factory.getInstance(); - SecurityUtils.setSecurityManager(securityManager); - - final Initialization init = Initialization.setUp(); - try { - // init backend - if (START_BACKEND) { - BackendTransaction.init(); - - // init benchmark - TransactionBenchmark.getRootInstance(); + initShiro(config); + } + + public static void initBackend() throws Exception { + if (START_BACKEND) { + try (final Initialization init = Initialization.setUp()){ + BackendTransaction.init(); - // Role - Role.init(init.getAccess()); + // init benchmark + TransactionBenchmark.getRootInstance(); - // Data types - initDatatypes(init.getAccess()); + // Role + Role.init(init.getAccess()); - // check for chown script - FileUtils.testChownScript(); + // Data types + initDatatypes(init.getAccess()); - // ChecksumUpdater - ChecksumUpdater.start(); - } else { - logger.info("NO BACKEND"); - } + // check for chown script + FileUtils.testChownScript(); - // GUI + // ChecksumUpdater + ChecksumUpdater.start(); + } + } else { + logger.info("NO BACKEND"); + } + } + + public static void initGUI() throws InterruptedException { if (START_GUI) { final CaosDBTerminal caosDBTerminal = new CaosDBTerminal(); caosDBTerminal.setName("CaosDBTerminal"); @@ -329,40 +309,67 @@ public class CaosDBServer extends Application { logger.info("NO GUI"); System.setOut(new NullPrintStream()); } + } + + - // Web server properties - final int port_https = - Integer.parseInt(getServerProperty(ServerProperties.KEY_SERVER_PORT_HTTPS)); - final int port_http = - Integer.parseInt(getServerProperty(ServerProperties.KEY_SERVER_PORT_HTTP)); - int port_redirect_https; - try { - port_redirect_https = - Integer.parseInt(getServerProperty(ServerProperties.KEY_REDIRECT_HTTP_TO_HTTPS_PORT)); - } catch (NumberFormatException e) { - port_redirect_https = port_https; - } - final int initialConnections = - Integer.parseInt(getServerProperty(ServerProperties.KEY_INITIAL_CONNECTIONS)); - final int maxTotalConnections = - Integer.parseInt(getServerProperty(ServerProperties.KEY_MAX_CONNECTIONS)); - - init.release(); - - if (INSECURE) { - runHTTPServer(port_http, initialConnections, maxTotalConnections); - } else { - runHTTPSServer( - port_https, port_http, port_redirect_https, initialConnections, maxTotalConnections); - } + /** + * This main method starts up a web application that will listen on a port defined in the config + * file. + * + * @param args One option temporarily (for testing) available: silent: If present: disable + * System.out-stream (stream to a NullPrintStream). This makes the response of the database + * amazingly faster. + * @throws IOException + * @throws FileNotFoundException + * @throws SecurityException + * @throws Exception If problems occur. + */ + public static void main(final String[] args) + throws SecurityException, FileNotFoundException, IOException { + try { + init(args); + initScheduler(); + initServerProperties(); + initTimeZone(); + OneTimeAuthenticationToken.init(); + initShiro(); + initBackend(); + initWebServer(); initShutDownHook(); - } catch (final Exception e) { - logger.error("Server start failed.", e); - init.release(); + } catch (Exception e1) { + logger.error("Could not start the server.", e1); System.exit(1); } } + private static void initWebServer() throws Exception { + final int port_https = + Integer.parseInt(getServerProperty(ServerProperties.KEY_SERVER_PORT_HTTPS)); + final int port_http = + Integer.parseInt(getServerProperty(ServerProperties.KEY_SERVER_PORT_HTTP)); + int port_redirect_https; + try { + port_redirect_https = + Integer.parseInt(getServerProperty(ServerProperties.KEY_REDIRECT_HTTP_TO_HTTPS_PORT)); + } catch (NumberFormatException e) { + port_redirect_https = port_https; + } + final int initialConnections = + Integer.parseInt(getServerProperty(ServerProperties.KEY_INITIAL_CONNECTIONS)); + final int maxTotalConnections = + Integer.parseInt(getServerProperty(ServerProperties.KEY_MAX_CONNECTIONS)); + + + if (INSECURE) { + runHTTPServer(port_http, initialConnections, maxTotalConnections); + } else { + runHTTPSServer( + port_https, port_http, port_redirect_https, initialConnections, maxTotalConnections); + } + + } + private static void initScheduler() throws SchedulerException { SCHEDULER = StdSchedulerFactory.getDefaultScheduler(); SCHEDULER.start(); diff --git a/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java b/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java index 651aeab6758303bbc0f0419878eaa7a421dbaa21..615a6447ba69bb3eba2ec9b43894924f08bf4e0d 100644 --- a/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java +++ b/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java @@ -23,12 +23,6 @@ package caosdb.server.accessControl; import static caosdb.server.utils.Utils.URLDecodeWithUTF8; - -import caosdb.server.CaosDBServer; -import caosdb.server.ServerProperties; -import caosdb.server.permissions.ResponsibleAgent; -import caosdb.server.permissions.Role; -import caosdb.server.utils.Utils; import java.sql.Timestamp; import java.util.Collection; import java.util.LinkedList; @@ -36,8 +30,11 @@ import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.subject.Subject; import org.restlet.data.Cookie; import org.restlet.data.CookieSetting; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import caosdb.server.CaosDBServer; +import caosdb.server.ServerProperties; +import caosdb.server.permissions.ResponsibleAgent; +import caosdb.server.permissions.Role; +import caosdb.server.utils.Utils; /** * Useful static methods, mainly for parsing and serializing SessionTokens by the means of web @@ -47,8 +44,6 @@ import org.slf4j.LoggerFactory; */ public class AuthenticationUtils { - private static final Logger logger = LoggerFactory.getLogger(AuthenticationUtils.class); - public static final String ONE_TIME_TOKEN_COOKIE = "OneTimeToken"; public static final String SESSION_TOKEN_COOKIE = "SessionToken"; public static final String SESSION_TIMEOUT_COOKIE = "SessionTimeOut"; @@ -102,11 +97,7 @@ public class AuthenticationUtils { if (cookie != null) { final String tokenString = URLDecodeWithUTF8(cookie.getValue()); if (tokenString != null && !tokenString.equals("")) { - try { - return SelfValidatingAuthenticationToken.parse(tokenString, curry); - } catch (final Exception e) { - logger.warn("AUTHTOKEN_PARSING_FAILED", e); - } + return SelfValidatingAuthenticationToken.parse(tokenString, curry); } } return null; diff --git a/src/main/java/caosdb/server/accessControl/OneTimeAuthenticationToken.java b/src/main/java/caosdb/server/accessControl/OneTimeAuthenticationToken.java index 69ab0b546294d9753ee809dfdccafc0c6d708a12..3c4ddbca406204a517162eb694c4dc802a02b3cf 100644 --- a/src/main/java/caosdb/server/accessControl/OneTimeAuthenticationToken.java +++ b/src/main/java/caosdb/server/accessControl/OneTimeAuthenticationToken.java @@ -189,7 +189,7 @@ public class OneTimeAuthenticationToken extends SelfValidatingAuthenticationToke } public static OneTimeAuthenticationToken generate(Config c) { - return generate(c, AnonymousAuthenticationToken.PRINCIPAL, null); + return generate(c, new Principal(AnonymousAuthenticationToken.PRINCIPAL), null); } public static OneTimeAuthenticationToken generateForPurpose( diff --git a/src/main/java/caosdb/server/terminal/CaosDBTerminal.java b/src/main/java/caosdb/server/terminal/CaosDBTerminal.java index 8113d4e1e7c36adb517543b778d03ec9a0970598..02b9465cecfc816b7e76da60495bdee44c40debc 100644 --- a/src/main/java/caosdb/server/terminal/CaosDBTerminal.java +++ b/src/main/java/caosdb/server/terminal/CaosDBTerminal.java @@ -22,14 +22,19 @@ */ package caosdb.server.terminal; +import java.nio.charset.Charset; import com.googlecode.lanterna.TerminalFacade; import com.googlecode.lanterna.gui.GUIScreen; import com.googlecode.lanterna.gui.GUIScreen.Position; import com.googlecode.lanterna.screen.Screen; import com.googlecode.lanterna.terminal.Terminal; import com.googlecode.lanterna.terminal.text.UnixTerminal; -import java.nio.charset.Charset; +/** + * @deprecated Soon to be removed + * @author Timm Fitschen (t.fitschen@indiscale.com) + */ +@Deprecated public class CaosDBTerminal extends Thread { public CaosDBTerminal() { diff --git a/src/main/java/caosdb/server/utils/FileUtils.java b/src/main/java/caosdb/server/utils/FileUtils.java index 824646caab6983863acd7d35a276a1213b393235..00f243bcff6d84a276892b3363665b8e3bb1cc9e 100644 --- a/src/main/java/caosdb/server/utils/FileUtils.java +++ b/src/main/java/caosdb/server/utils/FileUtils.java @@ -25,13 +25,6 @@ package caosdb.server.utils; import static java.nio.file.Files.isSameFile; import static java.nio.file.Files.isSymbolicLink; import static java.nio.file.Files.readSymbolicLink; - -import caosdb.server.CaosDBException; -import caosdb.server.CaosDBServer; -import caosdb.server.FileSystem; -import caosdb.server.ServerProperties; -import caosdb.server.database.exceptions.TransactionException; -import caosdb.server.entity.Message; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -44,6 +37,12 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import org.eclipse.jetty.io.RuntimeIOException; +import caosdb.server.CaosDBException; +import caosdb.server.CaosDBServer; +import caosdb.server.FileSystem; +import caosdb.server.ServerProperties; +import caosdb.server.database.exceptions.TransactionException; +import caosdb.server.entity.Message; public class FileUtils { @@ -218,6 +217,13 @@ public class FileUtils { } } + /** + * @deprecated Soon to be removed. + * @throws IOException + * @throws InterruptedException + * @throws CaosDBException + */ + @Deprecated public static void testChownScript() throws IOException, InterruptedException, CaosDBException { final String sudopw = CaosDBServer.getServerProperty(ServerProperties.KEY_SUDO_PASSWORD); final Process cmd = diff --git a/src/main/java/caosdb/server/utils/Initialization.java b/src/main/java/caosdb/server/utils/Initialization.java index e77922a417c1a2ef9542cb3dc9b8971ca10b332a..6e1266f87dd6558bd55351d2963133b7a7bb3407 100644 --- a/src/main/java/caosdb/server/utils/Initialization.java +++ b/src/main/java/caosdb/server/utils/Initialization.java @@ -26,7 +26,7 @@ import caosdb.server.database.DatabaseMonitor; import caosdb.server.database.access.Access; import caosdb.server.transaction.TransactionInterface; -public final class Initialization implements TransactionInterface { +public final class Initialization implements TransactionInterface, AutoCloseable { private Access access; private static final Initialization instance = new Initialization(); @@ -43,13 +43,15 @@ public final class Initialization implements TransactionInterface { return this.access; } - public final void release() { + @Override + public void execute() throws Exception {} + + @Override + public void close() throws Exception { if (this.access != null) { this.access.release(); this.access = null; } } - @Override - public void execute() throws Exception {} } diff --git a/src/test/java/caosdb/server/Misc.java b/src/test/java/caosdb/server/Misc.java index bcdc1729f008dbb1393fe238a3eb763c67d69e0f..222a0b9db84efa97dcb93fc92e583309af5b9f75 100644 --- a/src/test/java/caosdb/server/Misc.java +++ b/src/test/java/caosdb/server/Misc.java @@ -26,10 +26,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; - -import caosdb.server.database.misc.TransactionBenchmark; -import caosdb.server.jobs.core.CheckFileStorageConsistency; -import caosdb.server.utils.CronJob; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -39,16 +35,15 @@ import java.io.ObjectOutputStream; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.shiro.SecurityUtils; -import org.apache.shiro.config.Ini; -import org.apache.shiro.config.IniSecurityManagerFactory; -import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; -import org.apache.shiro.util.Factory; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.jvnet.libpam.PAMException; import org.jvnet.libpam.UnixUser; +import caosdb.server.database.misc.TransactionBenchmark; +import caosdb.server.jobs.core.CheckFileStorageConsistency; +import caosdb.server.utils.CronJob; public class Misc { @BeforeClass @@ -293,12 +288,7 @@ public class Misc { @Test public void testShiro() { - Ini config = CaosDBServer.getShiroConfig(); - final Factory<SecurityManager> factory = new IniSecurityManagerFactory(config); - - final SecurityManager securityManager = factory.getInstance(); - - SecurityUtils.setSecurityManager(securityManager); + CaosDBServer.initShiro(); final Subject subject = SecurityUtils.getSubject(); diff --git a/src/test/java/caosdb/server/authentication/AuthTokenTest.java b/src/test/java/caosdb/server/authentication/AuthTokenTest.java index 75bbbb56a60b4510ea7496770256de2ee6148087..4a2c2f1cea901b6ab45f49142a55532c7e65a06d 100644 --- a/src/test/java/caosdb/server/authentication/AuthTokenTest.java +++ b/src/test/java/caosdb/server/authentication/AuthTokenTest.java @@ -24,7 +24,19 @@ package caosdb.server.authentication; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; - +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import org.apache.commons.io.input.CharSequenceInputStream; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.subject.Subject; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; import caosdb.server.CaosDBServer; import caosdb.server.ServerProperties; import caosdb.server.accessControl.AnonymousAuthenticationToken; @@ -44,23 +56,6 @@ import caosdb.server.resource.TestScriptingResource.RetrievePasswordValidator; import caosdb.server.resource.TestScriptingResource.RetrievePermissionRules; import caosdb.server.resource.TestScriptingResource.RetrieveRole; import caosdb.server.resource.TestScriptingResource.RetrieveUser; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import org.apache.commons.io.input.CharSequenceInputStream; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authc.AuthenticationException; -import org.apache.shiro.config.Ini; -import org.apache.shiro.config.IniSecurityManagerFactory; -import org.apache.shiro.mgt.SecurityManager; -import org.apache.shiro.subject.Subject; -import org.apache.shiro.util.Factory; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; public class AuthTokenTest { @@ -78,12 +73,7 @@ public class AuthTokenTest { RetrievePasswordValidatorImpl.class, RetrievePasswordValidator.class); CaosDBServer.initServerProperties(); - Ini config = CaosDBServer.getShiroConfig(); - final Factory<SecurityManager> factory = new IniSecurityManagerFactory(config); - - final SecurityManager securityManager = factory.getInstance(); - - SecurityUtils.setSecurityManager(securityManager); + CaosDBServer.initShiro(); } @Test diff --git a/src/test/java/caosdb/server/resource/TestScriptingResource.java b/src/test/java/caosdb/server/resource/TestScriptingResource.java index ddf915fb2bc8f9401c630339b274404ab37545af..9981273565d97d19e887a995d756a502a325d03a 100644 --- a/src/test/java/caosdb/server/resource/TestScriptingResource.java +++ b/src/test/java/caosdb/server/resource/TestScriptingResource.java @@ -23,36 +23,13 @@ package caosdb.server.resource; import static org.junit.Assert.assertEquals; - -import caosdb.server.CaosDBServer; -import caosdb.server.accessControl.AuthenticationUtils; -import caosdb.server.accessControl.CredentialsValidator; -import caosdb.server.accessControl.Principal; -import caosdb.server.accessControl.Role; -import caosdb.server.database.BackendTransaction; -import caosdb.server.database.access.Access; -import caosdb.server.database.backend.interfaces.RetrievePasswordValidatorImpl; -import caosdb.server.database.backend.interfaces.RetrievePermissionRulesImpl; -import caosdb.server.database.backend.interfaces.RetrieveRoleImpl; -import caosdb.server.database.backend.interfaces.RetrieveUserImpl; -import caosdb.server.database.exceptions.TransactionException; -import caosdb.server.database.misc.TransactionBenchmark; -import caosdb.server.database.proto.ProtoUser; -import caosdb.server.entity.Message; -import caosdb.server.permissions.PermissionRule; -import caosdb.server.scripting.ScriptingPermissions; -import caosdb.server.scripting.ServerSideScriptingCaller; import java.io.IOException; import java.util.Date; import java.util.HashSet; import java.util.List; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.permission.WildcardPermission; -import org.apache.shiro.config.Ini; -import org.apache.shiro.config.IniSecurityManagerFactory; -import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; -import org.apache.shiro.util.Factory; import org.jdom2.Element; import org.junit.BeforeClass; import org.junit.Test; @@ -65,6 +42,24 @@ import org.restlet.data.Reference; import org.restlet.data.Status; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; +import caosdb.server.CaosDBServer; +import caosdb.server.accessControl.AuthenticationUtils; +import caosdb.server.accessControl.CredentialsValidator; +import caosdb.server.accessControl.Principal; +import caosdb.server.accessControl.Role; +import caosdb.server.database.BackendTransaction; +import caosdb.server.database.access.Access; +import caosdb.server.database.backend.interfaces.RetrievePasswordValidatorImpl; +import caosdb.server.database.backend.interfaces.RetrievePermissionRulesImpl; +import caosdb.server.database.backend.interfaces.RetrieveRoleImpl; +import caosdb.server.database.backend.interfaces.RetrieveUserImpl; +import caosdb.server.database.exceptions.TransactionException; +import caosdb.server.database.misc.TransactionBenchmark; +import caosdb.server.database.proto.ProtoUser; +import caosdb.server.entity.Message; +import caosdb.server.permissions.PermissionRule; +import caosdb.server.scripting.ScriptingPermissions; +import caosdb.server.scripting.ServerSideScriptingCaller; public class TestScriptingResource { @@ -164,12 +159,7 @@ public class TestScriptingResource { RetrievePasswordValidatorImpl.class, RetrievePasswordValidator.class); CaosDBServer.initServerProperties(); - Ini config = CaosDBServer.getShiroConfig(); - final Factory<SecurityManager> factory = new IniSecurityManagerFactory(config); - - final SecurityManager securityManager = factory.getInstance(); - - SecurityUtils.setSecurityManager(securityManager); + CaosDBServer.initShiro(); } ScriptingResource resource = diff --git a/src/test/java/caosdb/server/utils/FileUtilsTest.java b/src/test/java/caosdb/server/utils/FileUtilsTest.java index e4b2411dc0e77ce0225c0637422c84bbab2cc4aa..688b14a85a323c3faba205d6da5dd6a8a40c03b0 100644 --- a/src/test/java/caosdb/server/utils/FileUtilsTest.java +++ b/src/test/java/caosdb/server/utils/FileUtilsTest.java @@ -26,19 +26,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; - -import caosdb.server.CaosDBException; -import caosdb.server.CaosDBServer; -import caosdb.server.FileSystem; -import caosdb.server.ServerProperties; -import caosdb.server.database.BackendTransaction; -import caosdb.server.database.access.Access; -import caosdb.server.database.backend.implementation.UnixFileSystem.UnixFileSystemGetFileIterator.FileNameIterator; -import caosdb.server.database.backend.implementation.UnixFileSystem.UnixFileSystemHelper; -import caosdb.server.database.backend.transaction.FileConsistencyCheck; -import caosdb.server.database.backend.transaction.GetFileIterator; -import caosdb.server.database.exceptions.TransactionException; -import caosdb.server.entity.Message; import java.io.File; import java.io.IOException; import java.io.PrintStream; @@ -46,7 +33,6 @@ import java.io.PrintWriter; import java.security.NoSuchAlgorithmException; import java.util.Iterator; import java.util.regex.Pattern; -import net.jcip.annotations.NotThreadSafe; import org.eclipse.jetty.io.RuntimeIOException; import org.junit.After; import org.junit.AfterClass; @@ -56,6 +42,19 @@ import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import caosdb.server.CaosDBException; +import caosdb.server.CaosDBServer; +import caosdb.server.FileSystem; +import caosdb.server.ServerProperties; +import caosdb.server.database.BackendTransaction; +import caosdb.server.database.access.Access; +import caosdb.server.database.backend.implementation.UnixFileSystem.UnixFileSystemGetFileIterator.FileNameIterator; +import caosdb.server.database.backend.implementation.UnixFileSystem.UnixFileSystemHelper; +import caosdb.server.database.backend.transaction.FileConsistencyCheck; +import caosdb.server.database.backend.transaction.GetFileIterator; +import caosdb.server.database.exceptions.TransactionException; +import caosdb.server.entity.Message; +import net.jcip.annotations.NotThreadSafe; @NotThreadSafe public class FileUtilsTest {