diff --git a/.devcontainer/development/Dockerfile b/.devcontainer/development/Dockerfile index 75027efa83..78d8d5d66f 100644 --- a/.devcontainer/development/Dockerfile +++ b/.devcontainer/development/Dockerfile @@ -1,8 +1,9 @@ -FROM openjdk:11-jdk-slim +FROM openjdk:21-jdk-slim # Set environment variables for Tomcat ENV CATALINA_HOME /usr/local/tomcat ENV PATH $CATALINA_HOME/bin:$PATH +ENV CATALINA_OPTS="--add-opens java.base/java.net=ALL-UNNAMED" # Copy Tomcat installation from the official Tomcat image COPY --from=tomcat:9.0.97 /usr/local/tomcat $CATALINA_HOME diff --git a/src/main/java/oscar/login/jaas/BaseLoginModule.java b/src/main/java/oscar/login/jaas/BaseLoginModule.java index 65b031c925..0a87f96cdf 100644 --- a/src/main/java/oscar/login/jaas/BaseLoginModule.java +++ b/src/main/java/oscar/login/jaas/BaseLoginModule.java @@ -26,7 +26,6 @@ import java.io.IOException; import java.security.Principal; -import java.security.acl.Group; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -66,11 +65,11 @@ public class BaseLoginModule implements LoginModule { private OscarPrincipal principal; - private Group rolesGroup; + private OscarGroup rolesGroup; - private Group callerPrincipal; + private OscarGroup callerPrincipal; - private Group authPrincipal; + private OscarGroup authPrincipal; private boolean authorizationEnabled = false; @@ -164,7 +163,7 @@ public boolean login() throws LoginException { authPrincipal.addMember(getPrincipal()); setAuthPrincipal(authPrincipal); - Group rolesGroup = new OscarGroup("Roles"); + OscarGroup rolesGroup = new OscarGroup("Roles"); for (OscarRole role : getRoles(loginName)) { rolesGroup.addMember(role); } @@ -275,27 +274,27 @@ public void setSharedState(Map<String, ?> sharedState) { this.sharedState = sharedState; } - public Group getRolesGroup() { + public OscarGroup getRolesGroup() { return rolesGroup; } - public void setRolesGroup(Group rolesGroup) { + public void setRolesGroup(OscarGroup rolesGroup) { this.rolesGroup = rolesGroup; } - public Group getCallerPrincipal() { + public OscarGroup getCallerPrincipal() { return callerPrincipal; } - public void setCallerPrincipal(Group callerPrincipal) { + public void setCallerPrincipal(OscarGroup callerPrincipal) { this.callerPrincipal = callerPrincipal; } - public Group getAuthPrincipal() { + public OscarGroup getAuthPrincipal() { return authPrincipal; } - public void setAuthPrincipal(Group authPrincipal) { + public void setAuthPrincipal(OscarGroup authPrincipal) { this.authPrincipal = authPrincipal; } diff --git a/src/main/java/oscar/login/jaas/OscarGroup.java b/src/main/java/oscar/login/jaas/OscarGroup.java index f331e1c99d..9d5dc8f6cd 100644 --- a/src/main/java/oscar/login/jaas/OscarGroup.java +++ b/src/main/java/oscar/login/jaas/OscarGroup.java @@ -26,13 +26,12 @@ import java.io.Serializable; import java.security.Principal; -import java.security.acl.Group; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.List; -public class OscarGroup implements Group, Serializable { +public class OscarGroup implements Principal, Serializable { private static final long serialVersionUID = 1L; @@ -56,25 +55,44 @@ public void setName(String name) { this.name = name; } - @Override + /** + * Adds a member to the group. + * + * @param user the Principal to be added + * @return true whether the member was added + */ public boolean addMember(Principal user) { if (!principals.contains(user)) principals.add(user); return true; } - @Override + /** + * Removes a member from the group. + * + * @param user the Principal to be removed + * @return true whether the member was removed + */ public boolean removeMember(Principal user) { principals.remove(user); return true; } - @Override + /** + * Checks if a Principal is a member of the group. + * + * @param member the Principal to be checked + * @return true if the member exists in the group + */ public boolean isMember(Principal member) { return principals.contains(member); } - @Override + /** + * Returns an enumeration of the group's members. + * + * @return an Enumeration of the members + */ public Enumeration<? extends Principal> members() { return Collections.enumeration(principals); }