Browse Source

SEC-1464: Deprecate UserMap, InMemoryDaoImpl and other related classes in favour of the simpler (non-property editor based) InMemoryUserDetailsManager.

Luke Taylor 15 years ago
parent
commit
024e6904ff

+ 2 - 0
core/src/main/java/org/springframework/security/core/userdetails/memory/InMemoryDaoImpl.java

@@ -30,7 +30,9 @@ import java.util.Properties;
  * Retrieves user details from an in-memory list created by the bean context.
  *
  * @author Ben Alex
+ * @deprecated Use InMemoryUserDetailsManager instead (or write your own implementation)
  */
+@Deprecated
 public class InMemoryDaoImpl implements UserDetailsService, InitializingBean {
     //~ Instance fields ================================================================================================
 

+ 2 - 0
core/src/main/java/org/springframework/security/core/userdetails/memory/UserMap.java

@@ -32,7 +32,9 @@ import org.springframework.util.Assert;
  * should not be used if usernames need to be case-sensitive.
  *
  * @author Ben Alex
+ * @deprecated Use a plain map instead
  */
+@Deprecated
 public class UserMap {
     //~ Static fields/initializers =====================================================================================
 

+ 1 - 0
core/src/main/java/org/springframework/security/core/userdetails/memory/UserMapEditor.java

@@ -41,6 +41,7 @@ import java.util.Properties;
  *
  * @author Ben Alex
  */
+@Deprecated
 public class UserMapEditor extends PropertyEditorSupport {
     //~ Methods ========================================================================================================
 

+ 2 - 1
core/src/main/java/org/springframework/security/provisioning/InMemoryUserDetailsManager.java

@@ -113,7 +113,8 @@ public class InMemoryUserDetailsManager implements UserDetailsManager {
             throw new UsernameNotFoundException(username);
         }
 
-        return user;
+        return new User(user.getUsername(), user.getPassword(), user.isEnabled(), true, true, true,
+                user.getAuthorities());
     }
 
 }

+ 2 - 14
core/src/test/java/org/springframework/security/core/userdetails/memory/InMemoryDaoTests.java

@@ -30,26 +30,14 @@ import java.util.Properties;
  *
  * @author Ben Alex
  */
+@SuppressWarnings("deprecation")
 public class InMemoryDaoTests extends TestCase {
-    //~ Constructors ===================================================================================================
-
-    public InMemoryDaoTests() {
-        super();
-    }
-
-    public InMemoryDaoTests(String arg0) {
-        super(arg0);
-    }
 
     //~ Methods ========================================================================================================
 
-    public static void main(String[] args) {
-        junit.textui.TestRunner.run(InMemoryDaoTests.class);
-    }
-
     private UserMap makeUserMap() {
         UserMapEditor editor = new UserMapEditor();
-        editor.setAsText("rod=koala,ROLE_ONE,ROLE_TWO,enabled\r\nscott=wombat,ROLE_ONE,ROLE_TWO,enabled");
+        editor.setAsText("rod=koala,ROLE_ONE,ROLE_TWO,enabled\nScott=wombat,ROLE_ONE,ROLE_TWO,enabled");
 
         return (UserMap) editor.getValue();
     }

+ 1 - 17
core/src/test/java/org/springframework/security/core/userdetails/memory/UserMapEditorTests.java

@@ -27,27 +27,11 @@ import org.springframework.security.core.userdetails.memory.UserMapEditor;
  *
  * @author Ben Alex
  */
+@SuppressWarnings("deprecation")
 public class UserMapEditorTests extends TestCase {
-    //~ Constructors ===================================================================================================
-
-    public UserMapEditorTests() {
-        super();
-    }
-
-    public UserMapEditorTests(String arg0) {
-        super(arg0);
-    }
 
     //~ Methods ========================================================================================================
 
-    public static void main(String[] args) {
-        junit.textui.TestRunner.run(UserMapEditorTests.class);
-    }
-
-    public final void setUp() throws Exception {
-        super.setUp();
-    }
-
     public void testConvertedIntoUserSuccessfullyWhenDisabled() {
         UserMapEditor editor = new UserMapEditor();
         editor.setAsText("rod=koala,ROLE_ONE,ROLE_TWO,disabled");

+ 1 - 1
core/src/test/java/org/springframework/security/core/userdetails/memory/UserMapTests.java

@@ -29,8 +29,8 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
  *
  * @author Ben Alex
  */
+@SuppressWarnings("deprecation")
 public class UserMapTests {
-
     @Test
     public void testAddAndRetrieveUser() {
         UserDetails rod = new User("rod", "koala", true, true, true, true,

+ 14 - 12
web/src/test/java/org/springframework/security/web/authentication/www/DigestAuthenticationFilterTests.java

@@ -16,6 +16,7 @@
 package org.springframework.security.web.authentication.www;
 
 import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
 
 import java.io.IOException;
 import java.util.Map;
@@ -37,11 +38,11 @@ import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.security.core.authority.AuthorityUtils;
 import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
 import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.security.core.userdetails.cache.NullUserCache;
-import org.springframework.security.core.userdetails.memory.InMemoryDaoImpl;
-import org.springframework.security.core.userdetails.memory.UserMap;
-import org.springframework.security.core.userdetails.memory.UserMapEditor;
 import org.springframework.util.StringUtils;
 
 
@@ -109,26 +110,27 @@ public class DigestAuthenticationFilterTests {
     }
 
     @After
-    public void clearContext() throws Exception {
+    public void clearContext() {
         SecurityContextHolder.clearContext();
     }
 
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         SecurityContextHolder.clearContext();
 
         // Create User Details Service
-        InMemoryDaoImpl dao = new InMemoryDaoImpl();
-        UserMapEditor editor = new UserMapEditor();
-        editor.setAsText("rod,ok=koala,ROLE_ONE,ROLE_TWO,enabled\r\n");
-        dao.setUserMap((UserMap) editor.getValue());
+        UserDetailsService uds = new UserDetailsService() {
+            public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+                return new User("rod,ok", "koala", AuthorityUtils.createAuthorityList("ROLE_ONE","ROLE_TWO"));
+            }
+        };
 
         DigestAuthenticationEntryPoint ep = new DigestAuthenticationEntryPoint();
         ep.setRealmName(REALM);
         ep.setKey(KEY);
 
         filter = new DigestAuthenticationFilter();
-        filter.setUserDetailsService(dao);
+        filter.setUserDetailsService(uds);
         filter.setAuthenticationEntryPoint(ep);
 
         request = new MockHttpServletRequest("GET", REQUEST_URI);
@@ -169,7 +171,7 @@ public class DigestAuthenticationFilterTests {
     @Test
     public void testGettersSetters() {
         DigestAuthenticationFilter filter = new DigestAuthenticationFilter();
-        filter.setUserDetailsService(new InMemoryDaoImpl());
+        filter.setUserDetailsService(mock(UserDetailsService.class));
         assertTrue(filter.getUserDetailsService() != null);
 
         filter.setAuthenticationEntryPoint(new DigestAuthenticationEntryPoint());
@@ -329,7 +331,7 @@ public class DigestAuthenticationFilterTests {
     @Test(expected=IllegalArgumentException.class)
     public void startupDetectsMissingAuthenticationEntryPoint() throws Exception {
         DigestAuthenticationFilter filter = new DigestAuthenticationFilter();
-        filter.setUserDetailsService(new InMemoryDaoImpl());
+        filter.setUserDetailsService(mock(UserDetailsService.class));
         filter.afterPropertiesSet();
     }