Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/UserManagerCreateUserTest.java =================================================================== --- jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/UserManagerCreateUserTest.java (revision 1469826) +++ jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/UserManagerCreateUserTest.java (working copy) @@ -156,10 +156,8 @@ Principal p = getTestPrincipal(); User user = createUser(p.getName(), null); createdUsers.add(user); - - fail("A User cannot be built with 'null' password"); } catch (Exception e) { - // ok + fail("Could not create a user with 'null' password"); } } Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImplTest.java =================================================================== --- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImplTest.java (revision 1469826) +++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImplTest.java (working copy) @@ -179,12 +179,11 @@ public void testChangePasswordNull() throws RepositoryException { User u = (User) userMgr.getAuthorizable(uID); - // invalid 'null' pw string + // 'null' pw string is allowed for system-only users try { u.changePassword(null); - fail("invalid pw null"); } catch (Exception e) { - // success + fail("change pw to 'null' failed"); } } Index: jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd =================================================================== --- jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd (revision 1469826) +++ jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd (working copy) @@ -603,7 +603,7 @@ - rep:impersonators (STRING) protected multiple [rep:User] > rep:Authorizable, rep:Impersonatable - - rep:password (STRING) protected mandatory + - rep:password (STRING) protected - rep:disabled (STRING) protected [rep:Group] > rep:Authorizable Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java (revision 1469826) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java (working copy) @@ -737,7 +737,8 @@ */ void setPassword(NodeImpl userNode, String password, boolean forceHash) throws RepositoryException { if (password == null) { - throw new IllegalArgumentException("Password may not be null."); + // Allow 'null' password for system-only users that cannot login + return; } String pwHash; if (forceHash || PasswordUtility.isPlainTextPassword(password)) {