diff --git a/src/main/java/caosdb/server/accessControl/AnonymousAuthenticationToken.java b/src/main/java/caosdb/server/accessControl/AnonymousAuthenticationToken.java new file mode 100644 index 0000000000000000000000000000000000000000..6453df2486756be84b0fafc92a634a6b2a261753 --- /dev/null +++ b/src/main/java/caosdb/server/accessControl/AnonymousAuthenticationToken.java @@ -0,0 +1,33 @@ +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(){ + return INSTANCE; + } + + @Override + public Object getPrincipal() { + return PRINCIPAL; + } + + @Override + 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 new file mode 100644 index 0000000000000000000000000000000000000000..1e42b76fb8a43fc96b20c5b0239adc1d180f1c72 --- /dev/null +++ b/src/main/java/caosdb/server/accessControl/AnonymousRealm.java @@ -0,0 +1,23 @@ +package caosdb.server.accessControl; + +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authc.credential.AllowAllCredentialsMatcher; +import org.apache.shiro.realm.AuthenticatingRealm; + +public class AnonymousRealm extends AuthenticatingRealm { + + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) { + return new SimpleAuthenticationInfo(token.getPrincipal(), null, getName()); + } + + public AnonymousRealm() { + setAuthenticationTokenClass(AnonymousAuthenticationToken.class); + setCredentialsMatcher(new AllowAllCredentialsMatcher()); + setCachingEnabled(false); + setAuthenticationCachingEnabled(false); + } + +}