Question

I'm trying to simulate a login using the ProgrammaticLogin class in my arquillian tests in an embedded glassfish. my code is the following:

System.setProperty("java.security.auth.login.config","path/login.config")
com.sun.appserv.security.ProgrammaticLogin loginP = new ProgrammaticLogin();
    try{
        loginP.login("user1","password","fileRealm",true);
    }
    catch (Exception e){
        System.out.println(e.getMessage());
    }

i'm getting the following exception:

SEVERE: SEC9050: Programmatic login failed
com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Failed file login for user1.
    at com.sun.enterprise.security.auth.login.LoginContextDriver.doPasswordLogin(LoginContextDriver.java:394)
    at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:240)
    at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:153)
    at com.sun.appserv.security.ProgrammaticLogin$1.run(ProgrammaticLogin.java:174)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:168)
    at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:239)
    at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:211)

I've added a properties file users.properties that contains the login and the password.

Pas de solution correcte

Autres conseils

If the glassfish container runs in it's own process, the property you define using System.setProperty() is not available. It's only available inside the test, which runs in a different process. Maybe you should add a bean to your deployment that sets the property using @PostConstruct.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top