Unable to get the authentication details in CustomLoginModul
mechatronics12 Aug 7, 2008 2:01 AMHi
I am using webauthentication and custom login module for login purpose.
How to get the login details used in webAuthentication.login(username,password) in JBoss custom login module....
I am extending my customlogin module from UsernamePasswordLoginModule class, when I use the getUserName() method in super class I am getting username as null.
I tried by extending my customloginmodule class from AbstractServerLoginModule and tried to get the username from sharedstate object, But i am getting SharedState object as null.
Please suggest me how to get the username and password in Jboss CustomLoginModule
My client is like the folowing
boolean stat=webAuthentication.login(agencyLoginForm.getUserId(), agencyLoginForm.getPassword());
System.out.println("after login+stat"+stat);
My CustomLoginModule class will be like the one
public class TPLoginModule extends UsernamePasswordLoginModule{
private Subject subject;
private CallbackHandler handler;
private Map sharedState;
private Map options;
private boolean loginOk = false;
private String username;
private String[] roles = {"admin","agent","vendor"};
private String password;
SimplePrincipal principal;
private AgencyLoginDelegate agencyLoginDelegate=new AgencyLoginDelegate();
SessionInfo sessionInfo;
public void initialize(Subject subject, CallbackHandler handler, Map sharedState, Map options) {
//super.initialize(subject, handler, sharedState, options);
System.out.println("Initialize of New TPLoginModule");
this.subject = subject;
this.handler = handler;
this.sharedState = sharedState;
this.options = options;
}
public boolean login() throws LoginException {
loginOk=false;
System.out.println("login method of New TPLoginModule");
try
{
HttpServletRequest req=(HttpServletRequest)PolicyContext.getContext("javax.servlet.http.HttpServletRequest");
//Subject caller = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
//System.out.println("caller "+caller);
//System.out.println("caller.getPrincipals() "+caller.getPrincipals());
System.out.println("Inside daaaaaaaaaaa"+subject);
System.out.println("sharedState"+sharedState);
System.out.println("options "+options);
System.out.println("super.getUsername() "+super.getUsername());
sessionInfo = (SessionInfo)req.getSession().getAttribute("sessionInfo");
principal=new SimplePrincipal(username);
}
catch (Exception e ){
e.printStackTrace();
return false;
}
}
public boolean commit() throws LoginException {
System.out.println("commit of New TP");
if ( ! loginOk ) {
System.out.println("invalid logon Returing false from commit");
return false;
}
subject.getPrincipals().add(principal);
RDSGroup group = new RDSGroup("Roles");
for(int r = 0; r < roles.length; r ++) {
SimplePrincipal role = new SimplePrincipal(roles[r]);
group.addMember(role);
}
System.out.println("group added");
subject.getPrincipals().add(group);
return true;
}
public boolean abort() throws LoginException {
return true;
}
public boolean logout() throws LoginException {
return true;
}
protected Group[] getRoleSets() throws LoginException {
Group[] groups = {new RDSGroup("Roles")};
for(int r = 0; r < roles.length; r ++) {
SimplePrincipal role = new SimplePrincipal(roles[r]);
log.info("Found role="+roles[r]);
groups[0].addMember(role);
}
return groups;
}
/*@Override
protected Principal getIdentity() {
return principal;
}*/
@Override
protected String getUsersPassword() throws LoginException {
/*try {
InitialContext ctx = new InitialContext();
String userPath = userPathPrefix + '/' + super.getUsername();
log.info("Getting password for user="+super.getUsername());
String passwd = (String) ctx.lookup(userPath);
log.info("Found password="+passwd);
return passwd;
} catch(NamingException e) {
log.error("Failed to obtain password foruser="+super.getUsername(), e);
throw new LoginException(e.toString(true));
}
*/return null;
}
}
I have password-stacking entry in my login-config.xml as useFirstPass
Please help me