diff --git a/pom.xml b/pom.xml
index 0b59a310a2d8856a64c64f952699dd9df3aca7ad..92f859b1fd813976cc7440d06014b81431845f93 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>edu.wisc.uwss</groupId>
 	<artifactId>uw-spring-security</artifactId>
-	<version>2.0.1</version>
+	<version>${revision}</version>
 	<packaging>pom</packaging>
 	<name>UW Spring Security Parent</name>
 	<description>Parent project for module to integrate Spring Security with UW authentication mechanism.</description>
@@ -42,11 +42,12 @@
 	</repositories>
 
 	<properties>
+		<revision>3.0.0</revision>
 		<adi.development.version>0.5.1</adi.development.version>
-		<jackson.version>2.7.4</jackson.version>
+		<jackson.version>2.11.1</jackson.version>
 		<slf4j.version>1.7.7</slf4j.version>
-		<spring.framework.version>4.1.6.RELEASE</spring.framework.version>
-		<spring.security.version>4.0.1.RELEASE</spring.security.version>
+		<spring.framework.version>5.2.7.RELEASE</spring.framework.version>
+		<spring.security.version>5.3.3.RELEASE</spring.security.version>
 	</properties>
 	<dependencyManagement>
 		<dependencies>
@@ -97,6 +98,10 @@
                         <groupId>org.springframework.ws</groupId>
                         <artifactId>spring-ws-security</artifactId>
                     </exclusion>
+					<exclusion>
+						<groupId>joda-time</groupId>
+						<artifactId>joda-time</artifactId>
+					</exclusion>
                 </exclusions>
             </dependency>
 			<dependency>
@@ -217,7 +222,7 @@
 				<plugin>
 					<groupId>org.eclipse.jetty</groupId>
 					<artifactId>jetty-maven-plugin</artifactId>
-					<version>9.2.8.v20150217</version>
+					<version>9.4.30.v20200611</version>
 				</plugin>
 			</plugins>
 		</pluginManagement>
@@ -249,6 +254,11 @@
 				<artifactId>maven-surefire-plugin</artifactId>
 				<version>3.0.0-M5</version>
 			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-install-plugin</artifactId>
+				<version>3.0.0-M1</version>
+			</plugin>
 		</plugins>
 	</build>
 	<modules>
diff --git a/uw-spring-security-config/pom.xml b/uw-spring-security-config/pom.xml
index 058dda02cdb85986c359dd1fd0e9995a2cbf6cc1..6c24d40408a976d91373e427424905a2b620f997 100644
--- a/uw-spring-security-config/pom.xml
+++ b/uw-spring-security-config/pom.xml
@@ -3,7 +3,7 @@
 	<parent>
 		<groupId>edu.wisc.uwss</groupId>
 		<artifactId>uw-spring-security</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>${revision}</version>
 	</parent>
 	<artifactId>uw-spring-security-config</artifactId>
 	<name>UW Spring Security Configuration</name>
diff --git a/uw-spring-security-core/pom.xml b/uw-spring-security-core/pom.xml
index cb4b56687a2ac97ffb1c158f764105e770473dba..fff85ba64a039f36a6790a3c6e0f059e2e6b555d 100644
--- a/uw-spring-security-core/pom.xml
+++ b/uw-spring-security-core/pom.xml
@@ -3,7 +3,7 @@
 	<parent>
 		<groupId>edu.wisc.uwss</groupId>
 		<artifactId>uw-spring-security</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>${revision}</version>
 	</parent>
 	<artifactId>uw-spring-security-core</artifactId>
 	<name>UW Spring Security Core</name>
diff --git a/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsLoader.java b/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsLoader.java
index 88e52db6936e5e7b477ceb9b9b647bb2521b6da4..5ed2696311a68e4b4992ecc5752c102f9bb1ba5c 100644
--- a/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsLoader.java
+++ b/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsLoader.java
@@ -36,7 +36,7 @@ public interface LocalUserDetailsLoader {
    * @return a never null, but potentially empty, {@link List} of {@link UWUserDetails} instances
    * @throws UWSpringSecurityException if the {@link Resource} couldn't be read
    */
-  List<UWUserDetails> loadUsers(Resource resource);
+  List<? extends UWUserDetails> loadUsers(Resource resource);
 
   /**
    * Default loader uses Jackson and can parse both JSON and YAML formats.
@@ -54,9 +54,9 @@ public interface LocalUserDetailsLoader {
       return objectMapper;
     }
     @Override
-    public List<UWUserDetails> loadUsers(Resource resource) {
+    public List<? extends UWUserDetails> loadUsers(Resource resource) {
       try {
-        List<UWUserDetails> users = getObjectMapper().readValue(resource.getInputStream(), new TypeReference<List<UWUserDetailsImpl>>(){});
+        List<? extends UWUserDetails> users = getObjectMapper().readValue(resource.getInputStream(), new TypeReference<List<UWUserDetailsImpl>>(){});
         return users;
       } catch (IOException e) {
         throw new UWSpringSecurityException("failed to read " + resource, e);
diff --git a/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsManagerImpl.java b/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsManagerImpl.java
index 03d4c41a241a4e6d569218bc30de0a6001d8d950..e7beabfbee2ed601a46d32ed5a663be422bb97e2 100644
--- a/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsManagerImpl.java
+++ b/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsManagerImpl.java
@@ -81,7 +81,7 @@ public class LocalUserDetailsManagerImpl implements UserDetailsManager {
   @PostConstruct
   public void init() {
       logger.debug("LocalUserDetailsLoader of type {} enabled, processing resource {}", localUserDetailsLoader.getClass(), localUserResource);
-      List<UWUserDetails> users = localUserDetailsLoader.loadUsers(localUserResource);
+      List<? extends UWUserDetails> users = localUserDetailsLoader.loadUsers(localUserResource);
       for(UWUserDetails u : users) {
         addDemoUser(u);
       }
diff --git a/uw-spring-security-core/src/main/resources/edu/wisc/uwss/local/local-users.json b/uw-spring-security-core/src/main/resources/edu/wisc/uwss/local/local-users.json
index 7ad27b0e2159c0aed459b02b6ae7d9c3b9b1d522..50033d8140567092ac15f13739dc645b00c1911c 100644
--- a/uw-spring-security-core/src/main/resources/edu/wisc/uwss/local/local-users.json
+++ b/uw-spring-security-core/src/main/resources/edu/wisc/uwss/local/local-users.json
@@ -1,7 +1,7 @@
 [
   {
     "username": "admin",
-    "password": "admin",
+    "password": "{noop}admin",
     "fullName": "Amy Administrator",
     "firstName": "Amy",
     "lastName": "Administrator",
@@ -12,7 +12,7 @@
   },
   {
     "username": "jane",
-    "password": "jane",
+    "password": "{noop}jane",
     "fullName": "Jane Doe",
     "firstName": "Jane",
     "lastName": "Doe",
@@ -23,7 +23,7 @@
   },
   {
     "username": "john",
-    "password": "john",
+    "password": "{noop}john",
     "fullName": "John Doe",
     "firstName": "John",
     "lastName": "Doe",
@@ -34,7 +34,7 @@
   },
   {
     "username": "jim",
-    "password": "jim",
+    "password": "{noop}jim",
     "fullName": "Jim Doe",
     "firstName": "Jim",
     "lastName": "Doe",
diff --git a/uw-spring-security-core/src/main/resources/edu/wisc/uwss/local/local-users.yaml b/uw-spring-security-core/src/main/resources/edu/wisc/uwss/local/local-users.yaml
index 0ee90828447c106141ca5ae48e3e467973a45b45..073fa77afc3c72e48e03177e2788a9dbdbaa38c2 100644
--- a/uw-spring-security-core/src/main/resources/edu/wisc/uwss/local/local-users.yaml
+++ b/uw-spring-security-core/src/main/resources/edu/wisc/uwss/local/local-users.yaml
@@ -1,7 +1,7 @@
 ---
 - pvi: "UW000A000"
   username: "admin"
-  password: "admin"
+  password: "{noop}admin"
   fullName: "Amy Administrator"
   emailAddress: "amy.administrator@demo.wisc.edu"
   uddsMembership:
@@ -12,7 +12,7 @@
   lastName: "Administrator"
 - pvi: "UW000A001"
   username: "jane"
-  password: "jane"
+  password: "{noop}jane"
   fullName: "Jane Doe"
   emailAddress: "jane.doe@demo.wisc.edu"
   uddsMembership:
@@ -22,7 +22,7 @@
   lastName: "Doe"
 - pvi: "UW000A002"
   username: "john"
-  password: "john"
+  password: "{noop}john"
   fullName: "John Doe"
   emailAddress: "john.doe@demo.wisc.edu"
   uddsMembership:
@@ -32,7 +32,7 @@
   lastName: "Doe"
 - pvi: "UW000A003"
   username: "jim"
-  password: "jim"
+  password: "{noop}jim"
   fullName: "Jim Doe"
   emailAddress: "jim.doe@demo.wisc.edu"
   uddsMembership: []
diff --git a/uw-spring-security-core/src/test/java/edu/wisc/uwss/local/LocalUserDetailsManagerImplTest.java b/uw-spring-security-core/src/test/java/edu/wisc/uwss/local/LocalUserDetailsManagerImplTest.java
index c7b07a4e43f2cd2fde603d429469b277518b8a65..072ac49959b7e42d3d4d19af50fe1f64578102c4 100644
--- a/uw-spring-security-core/src/test/java/edu/wisc/uwss/local/LocalUserDetailsManagerImplTest.java
+++ b/uw-spring-security-core/src/test/java/edu/wisc/uwss/local/LocalUserDetailsManagerImplTest.java
@@ -297,7 +297,7 @@ public class LocalUserDetailsManagerImplTest {
   @Test
   public void unsupportedFormatWithUDDS() {
     LocalUserDetailsLoader attributesMapper = new LocalUserDetailsLoader.Default();
-    List<UWUserDetails> users = attributesMapper.loadUsers(new ClassPathResource("test-users.json"));
+    List<? extends UWUserDetails> users = attributesMapper.loadUsers(new ClassPathResource("test-users.json"));
 
     //demo STAR user with UDDS:
     String username = "aalpaca";
@@ -315,7 +315,7 @@ public class LocalUserDetailsManagerImplTest {
   @Test
   public void unsupportedFormatWithoutUDDS() {
     LocalUserDetailsLoader attributesMapper = new LocalUserDetailsLoader.Default();
-    List<UWUserDetails> users = attributesMapper.loadUsers(new ClassPathResource("test-users.json"));
+    List<? extends UWUserDetails> users = attributesMapper.loadUsers(new ClassPathResource("test-users.json"));
     //demo STAR user without UDDS:
     String username = "jim";
 
diff --git a/uw-spring-security-sample-war/pom.xml b/uw-spring-security-sample-war/pom.xml
index 44a82e31b2ff71d61dba8cd040235e2bec8dd094..9dad3966315d24c5d11ad8f890ceb97f09c38285 100644
--- a/uw-spring-security-sample-war/pom.xml
+++ b/uw-spring-security-sample-war/pom.xml
@@ -3,7 +3,7 @@
 	<parent>
 		<groupId>edu.wisc.uwss</groupId>
 		<artifactId>uw-spring-security</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>${revision}</version>
 	</parent>
 	<artifactId>uw-spring-security-sample-war</artifactId>
 	<name>UW Spring Security Sample War</name>
diff --git a/uw-spring-security-sample-war/src/main/webapp/index.html b/uw-spring-security-sample-war/src/main/webapp/index.html
index 55239678978f749284d7a71b004ea9ce3c204630..1a5cf6ef43a973be8b2fce2d75c0aded255c151a 100644
--- a/uw-spring-security-sample-war/src/main/webapp/index.html
+++ b/uw-spring-security-sample-war/src/main/webapp/index.html
@@ -29,8 +29,10 @@
   <p>Start VM with 'mvn clean install jetty:run -P preauth', visit http://localhost:8080/.</p>
   <ol>
   <li>Click 'Lazy with "ignorepreauth"', expect "anonymousUser".</li>
-  <li>Visit http://localhost:8080/index.html. Click 'Lazy authentication', expect JSON object representing UWUserDetails for 'Amy Administrator'.</li>
-  <li>Visit http://localhost:8080/index.html. Click 'Required authentication', expect JSON object representing UWUserDetails for 'Amy Administrator'.</li>
+  <li>Visit http://localhost:8080/index.html. Click 'Lazy authentication', expect JSON object representing UWUserDetails for 'Amy Administrator'.
+    Since at least 1.6.0 this has been returning "anonymousUser" instead.  Requires additional investigation to determine if there is a bug here.</li>
+  <li>Visit http://localhost:8080/index.html. Click 'Required authentication', expect JSON object representing UWUserDetails for 'Amy Administrator'.
+    Since at least 1.6.0 this has been failing with "Access denied".  Requires additional investigation to determine if there is a bug here.</li>
   </ol>
 
   <h3>combined</h3>
diff --git a/uw-spring-security-web/pom.xml b/uw-spring-security-web/pom.xml
index 4c6eedf84af3bfa43b89c83bf899f636fbef6843..9439fe8f492cbccf0b998cbfc5ab37d95d27ade0 100644
--- a/uw-spring-security-web/pom.xml
+++ b/uw-spring-security-web/pom.xml
@@ -1,9 +1,21 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
-	<parent>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <parent>
 		<groupId>edu.wisc.uwss</groupId>
 		<artifactId>uw-spring-security</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>${revision}</version>
 	</parent>
 	<artifactId>uw-spring-security-web</artifactId>
 	<name>UW Spring Security Web</name>