diff --git a/src/main/java/caosdb/datetime/UTCDateTime.java b/src/main/java/caosdb/datetime/UTCDateTime.java index 3b07af1471d10279899c0a8156357622fa0b2e37..846c8f9f266d4b834314b95e00973993d9031224 100644 --- a/src/main/java/caosdb/datetime/UTCDateTime.java +++ b/src/main/java/caosdb/datetime/UTCDateTime.java @@ -213,7 +213,7 @@ public class UTCDateTime implements Interval { // june 2015 addLeapSecond(2015, 06, 30); - + // dec 2016 addLeapSecond(2016, 12, 31); } diff --git a/src/main/java/caosdb/server/CaosAuthenticator.java b/src/main/java/caosdb/server/CaosAuthenticator.java index ed3646a00503b38ddd4c50863d5785fbafa02159..f2b616cf1ce5d13732c88d4f89d6959f33aab4f6 100644 --- a/src/main/java/caosdb/server/CaosAuthenticator.java +++ b/src/main/java/caosdb/server/CaosAuthenticator.java @@ -22,6 +22,10 @@ */ package caosdb.server; +import caosdb.server.accessControl.AuthenticationUtils; +import caosdb.server.accessControl.OneTimeAuthenticationToken; +import caosdb.server.accessControl.SessionToken; +import caosdb.server.resource.DefaultResource; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.shiro.SecurityUtils; @@ -31,10 +35,6 @@ import org.restlet.Context; import org.restlet.Request; import org.restlet.Response; import org.restlet.security.Authenticator; -import caosdb.server.accessControl.AuthenticationUtils; -import caosdb.server.accessControl.OneTimeAuthenticationToken; -import caosdb.server.accessControl.SessionToken; -import caosdb.server.resource.DefaultResource; public class CaosAuthenticator extends Authenticator { @@ -60,9 +60,11 @@ public class CaosAuthenticator extends Authenticator { if (sessionToken != null) { subject.login(sessionToken); } - + // anonymous users - if(!subject.isAuthenticated() && CaosDBServer.getServerProperty(ServerProperties.KEY_AUTH_OPTIONAL).equalsIgnoreCase("TRUE")){ + if (!subject.isAuthenticated() + && CaosDBServer.getServerProperty(ServerProperties.KEY_AUTH_OPTIONAL) + .equalsIgnoreCase("TRUE")) { subject.login(AuthenticationUtils.ANONYMOUS_USER); } } catch (AuthenticationException e) { diff --git a/src/main/java/caosdb/server/CaosDBServer.java b/src/main/java/caosdb/server/CaosDBServer.java index 5f907b6595a278b0099f364f3042aa2512863eec..e36b271f798db6d0a33f52d2a7b498938eac4188 100644 --- a/src/main/java/caosdb/server/CaosDBServer.java +++ b/src/main/java/caosdb/server/CaosDBServer.java @@ -437,7 +437,8 @@ public class CaosDBServer extends Application { private void setSessionCookies(final Response response) { final Subject subject = SecurityUtils.getSubject(); - if (subject.isAuthenticated() && subject.getPrincipal() != AuthenticationUtils.ANONYMOUS_USER.getPrincipal()) { + if (subject.isAuthenticated() + && subject.getPrincipal() != AuthenticationUtils.ANONYMOUS_USER.getPrincipal()) { final SessionToken sessionToken = SessionToken.generate((Principal) subject.getPrincipal(), null); diff --git a/src/main/java/caosdb/server/accessControl/AnonymousAuthenticationToken.java b/src/main/java/caosdb/server/accessControl/AnonymousAuthenticationToken.java index 6453df2486756be84b0fafc92a634a6b2a261753..a7d9338223a2b4b03a5f2ac761e14891122c0bca 100644 --- a/src/main/java/caosdb/server/accessControl/AnonymousAuthenticationToken.java +++ b/src/main/java/caosdb/server/accessControl/AnonymousAuthenticationToken.java @@ -3,15 +3,14 @@ package caosdb.server.accessControl; import org.apache.shiro.authc.AuthenticationToken; public class AnonymousAuthenticationToken implements AuthenticationToken { - + private static final long serialVersionUID = 1424325396819592888L; private static final AnonymousAuthenticationToken INSTANCE = new AnonymousAuthenticationToken(); public static final Object PRINCIPAL = new Object(); - private AnonymousAuthenticationToken() { - } - - public static AnonymousAuthenticationToken getInstance(){ + private AnonymousAuthenticationToken() {} + + public static AnonymousAuthenticationToken getInstance() { return INSTANCE; } @@ -24,10 +23,9 @@ public class AnonymousAuthenticationToken implements AuthenticationToken { public Object getCredentials() { return null; } - + @Override public boolean equals(Object obj) { return obj == this; } - } diff --git a/src/main/java/caosdb/server/accessControl/AnonymousRealm.java b/src/main/java/caosdb/server/accessControl/AnonymousRealm.java index 1e42b76fb8a43fc96b20c5b0239adc1d180f1c72..a2ddab00ae9b80df1b9ff7dc4dc5310c3cad6078 100644 --- a/src/main/java/caosdb/server/accessControl/AnonymousRealm.java +++ b/src/main/java/caosdb/server/accessControl/AnonymousRealm.java @@ -12,12 +12,11 @@ public class AnonymousRealm extends AuthenticatingRealm { protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) { return new SimpleAuthenticationInfo(token.getPrincipal(), null, getName()); } - + public AnonymousRealm() { setAuthenticationTokenClass(AnonymousAuthenticationToken.class); setCredentialsMatcher(new AllowAllCredentialsMatcher()); setCachingEnabled(false); setAuthenticationCachingEnabled(false); } - } diff --git a/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java b/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java index d1c70c1b5a3ae685835fa414ab167d7d328daef5..31d180a452aafad393fe9d1619705e0e2b49dd9f 100644 --- a/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java +++ b/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java @@ -56,7 +56,8 @@ public class AuthenticationUtils { public static final String SESSION_TOKEN_COOKIE = "SessionToken"; public static final String SESSION_TIMEOUT_COOKIE = "SessionTimeOut"; - public static final AuthenticationToken ANONYMOUS_USER = AnonymousAuthenticationToken.getInstance(); + public static final AuthenticationToken ANONYMOUS_USER = + AnonymousAuthenticationToken.getInstance(); /** * Create a cookie for a {@link SelfValidatingAuthenticationToken}. Returns null if the parameter diff --git a/src/main/java/caosdb/server/accessControl/CaosDBAuthorizingRealm.java b/src/main/java/caosdb/server/accessControl/CaosDBAuthorizingRealm.java index d23ae70e7b1a28db4c861ef8b0cf5c95b755f7a9..5cfa425ac235405a0c861e54c9d97ae8ffab58f5 100644 --- a/src/main/java/caosdb/server/accessControl/CaosDBAuthorizingRealm.java +++ b/src/main/java/caosdb/server/accessControl/CaosDBAuthorizingRealm.java @@ -22,6 +22,7 @@ */ package caosdb.server.accessControl; +import com.google.common.base.Objects; import java.util.Arrays; import java.util.List; import java.util.Set; @@ -32,7 +33,6 @@ import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.SimplePrincipalCollection; -import com.google.common.base.Objects; public class CaosDBAuthorizingRealm extends AuthorizingRealm { @@ -97,7 +97,7 @@ public class CaosDBAuthorizingRealm extends AuthorizingRealm { return false; } } - + @Override public int hashCode() { return this.principalCollection.hashCode(); diff --git a/src/main/java/caosdb/server/accessControl/SessionTokenRealm.java b/src/main/java/caosdb/server/accessControl/SessionTokenRealm.java index 97b4437d3e9e03a08c2bbac2453f8fb1dd68c32f..6ee72d0295153051e5ad31a6fd0fa092ab53d6e3 100644 --- a/src/main/java/caosdb/server/accessControl/SessionTokenRealm.java +++ b/src/main/java/caosdb/server/accessControl/SessionTokenRealm.java @@ -33,12 +33,12 @@ public class SessionTokenRealm extends AuthenticatingRealm { @Override protected AuthenticationInfo doGetAuthenticationInfo(final AuthenticationToken token) { - final SelfValidatingAuthenticationToken sessionToken = - (SelfValidatingAuthenticationToken) token; + final SelfValidatingAuthenticationToken sessionToken = + (SelfValidatingAuthenticationToken) token; - if (sessionToken.isValid()) { - return new SimpleAuthenticationInfo(sessionToken.getPrincipal(), null, getName()); - } + if (sessionToken.isValid()) { + return new SimpleAuthenticationInfo(sessionToken.getPrincipal(), null, getName()); + } return null; } diff --git a/src/main/java/caosdb/server/accessControl/UserSources.java b/src/main/java/caosdb/server/accessControl/UserSources.java index ad6581e596ecc074c3a2814b71c4dea6677ac2c9..44a540da0cb58dadc17ddec7ab596389bf45b3e0 100644 --- a/src/main/java/caosdb/server/accessControl/UserSources.java +++ b/src/main/java/caosdb/server/accessControl/UserSources.java @@ -33,7 +33,6 @@ import caosdb.server.utils.ServerMessages; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Set; @@ -162,13 +161,13 @@ public class UserSources extends HashMap<String, UserSource> { } public static Set<String> resolve(final PrincipalCollection principals) { - if(principals.getPrimaryPrincipal() == AuthenticationUtils.ANONYMOUS_USER.getPrincipal()){ + if (principals.getPrimaryPrincipal() == AuthenticationUtils.ANONYMOUS_USER.getPrincipal()) { // anymous has one role Set<String> roles = new HashSet<>(); roles.add("anonymous"); return roles; } - + Principal primaryPrincipal = (Principal) principals.getPrimaryPrincipal(); return resolve(primaryPrincipal.getRealm(), primaryPrincipal.getUsername()); } diff --git a/src/main/java/caosdb/server/permissions/EntityACL.java b/src/main/java/caosdb/server/permissions/EntityACL.java index e4037a80c5a8f2a085bbbaa477ed93e0c990571a..79008947823e9625283c03e1dd539328a58fef7f 100644 --- a/src/main/java/caosdb/server/permissions/EntityACL.java +++ b/src/main/java/caosdb/server/permissions/EntityACL.java @@ -24,6 +24,7 @@ package caosdb.server.permissions; import static caosdb.server.permissions.Role.OTHER_ROLE; import static caosdb.server.permissions.Role.OWNER_ROLE; + import caosdb.server.accessControl.AuthenticationUtils; import caosdb.server.accessControl.Principal; import caosdb.server.database.exceptions.TransactionException; @@ -74,7 +75,7 @@ public class EntityACL { } public static final EntityACL getOwnerACLFor(final Subject subject) { - if(subject.getPrincipal() == AuthenticationUtils.ANONYMOUS_USER.getPrincipal()){ + if (subject.getPrincipal() == AuthenticationUtils.ANONYMOUS_USER.getPrincipal()) { return new EntityACLFactory().create(); } return getOwnerACLFor((Principal) subject.getPrincipal()); diff --git a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java index 9ba1fb685f88252a9eaeebf4a61d0af1d55e8e14..133fe270ce8690b4492da645e987c3bab9dc1382 100644 --- a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java +++ b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java @@ -156,7 +156,9 @@ public abstract class AbstractCaosDBServerResource extends ServerResource { protected Element generateRootElement() { final Element retRoot = new Element("Response"); - if (getUser() != null && getUser().isAuthenticated() && !getUser().getPrincipal().equals(AuthenticationUtils.ANONYMOUS_USER.getPrincipal())) { + if (getUser() != null + && getUser().isAuthenticated() + && !getUser().getPrincipal().equals(AuthenticationUtils.ANONYMOUS_USER.getPrincipal())) { retRoot.setAttribute("username", ((Principal) getUser().getPrincipal()).getUsername()); retRoot.setAttribute("realm", ((Principal) getUser().getPrincipal()).getRealm()); } diff --git a/src/main/java/caosdb/server/transaction/Transaction.java b/src/main/java/caosdb/server/transaction/Transaction.java index c29efac3318933762120629245b8ddc6cbcc8be6..347e806e059edd124e9efde065c5509de3658c4c 100644 --- a/src/main/java/caosdb/server/transaction/Transaction.java +++ b/src/main/java/caosdb/server/transaction/Transaction.java @@ -223,15 +223,17 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra // TODO move to post-transaction job private void writeHistory() throws TransactionException, Message { if (logHistory()) { - String realm = getTransactor().getPrincipal() == AuthenticationUtils.ANONYMOUS_USER.getPrincipal() ? "" :((Principal) getTransactor().getPrincipal()).getRealm(); - String username = getTransactor().getPrincipal() == AuthenticationUtils.ANONYMOUS_USER.getPrincipal() ? "anonymous" : ((Principal) getTransactor().getPrincipal()).getUsername(); + String realm = + getTransactor().getPrincipal() == AuthenticationUtils.ANONYMOUS_USER.getPrincipal() + ? "" + : ((Principal) getTransactor().getPrincipal()).getRealm(); + String username = + getTransactor().getPrincipal() == AuthenticationUtils.ANONYMOUS_USER.getPrincipal() + ? "anonymous" + : ((Principal) getTransactor().getPrincipal()).getUsername(); Database.execute( new InsertTransactionHistory( - getContainer(), - this.getClass().getSimpleName(), - realm, - username, - getTimestamp()), + getContainer(), this.getClass().getSimpleName(), realm, username, getTimestamp()), getAccess()); } } diff --git a/src/test/java/caosdb/datetime/DateTimeTest.java b/src/test/java/caosdb/datetime/DateTimeTest.java index 2c66bcb14729514c7812ab6a64b388df652cff63..6366dccd5910c972e68201e7314275825f0f84b6 100644 --- a/src/test/java/caosdb/datetime/DateTimeTest.java +++ b/src/test/java/caosdb/datetime/DateTimeTest.java @@ -408,7 +408,7 @@ public class DateTimeTest { public void testUTCRange() { Interval d = (Interval) DateTimeFactory2.valueOf("9999-01-01T23:59:59UTC"); assertTrue(d instanceof UTCDateTime); - assertEquals("253370851225UTC", d.getILB_NF1()); + assertEquals("253370851226UTC", d.getILB_NF1()); Interval d2 = UTCDateTime.UTCSeconds(253370851225L, null); assertTrue(d instanceof UTCDateTime); assertEquals("253370851225UTC", d2.getILB_NF1()); @@ -418,7 +418,7 @@ public class DateTimeTest { d = (Interval) DateTimeFactory2.valueOf("9999-01-01T23:59:59.999999999UTC"); assertTrue(d instanceof UTCDateTime); - assertEquals("253370851225UTC999999999", d.getILB_NF1()); + assertEquals("253370851226UTC999999999", d.getILB_NF1()); d2 = UTCDateTime.UTCSeconds(253370851225L, 999999999); assertTrue(d instanceof UTCDateTime); assertEquals("253370851225UTC999999999", d2.getILB_NF1()); diff --git a/src/test/java/caosdb/server/Misc.java b/src/test/java/caosdb/server/Misc.java index 625213e9723ea536e737096cb73b01c70cbaea1e..82647b631e83fad42c2691c4b490441a389cb5f3 100644 --- a/src/test/java/caosdb/server/Misc.java +++ b/src/test/java/caosdb/server/Misc.java @@ -120,7 +120,7 @@ public class Misc { assertEquals("SOMETEST", matcher.group(2)); assertNull(matcher.group(1)); assertFalse(matcher.find()); - + matcher = parseargs.matcher("-t 12000/ExperimentalData"); assertTrue(matcher.find()); assertEquals("-t 12000", matcher.group(0));