// This file is now obsolete but is read for backward compatability
// Use the login-config.xml file instead
// $Id$

simple {
    // Very simple login module: 
    // any user name is accepted.
    // password should either coincide with user name or be null, 
    // all users have role "guest", 
    // users with non-null password also have role "user"
    org.jboss.security.auth.spi.SimpleServerLoginModule required;
};
