Ive gotten SSO to work for jboss portal and a supporting webapp  on the same 
virtual host.  But my login routine not only needs to authenticate the user 
against jboss portals user database, but also pull some information from a 
supporting database and work with it.

My problem is that I created a login method in my business layer that executes 
the following code and succesfully returns true of false for my login 
credentials.  It however does not set the SSO cookie and I cannot figure out 
why not.  

Incidently I tested the security constraint and login-config with both BASIC 
and FORM authentication and it works like a charm.  Without changing anything 
but the login forms action from j_security_check to a MyController,  which 
calls the method below  -- it was working fine. 

Any help ?  Anyone.. Bueller?

Heres the code:
My Authentication Class

  | public class SSOLogin {
  |     protected static final Log log = LogFactory.getLog(SSOLogin.class);
  | 
  |  
  | 
  |     public boolean authenticate(String userid, String password) throws 
LoginException {
  |             log.info("SSOLogin.authenticate(String, String) was called.");
  |             boolean result = false;
  |             try {
  |                     log.info("SSOLogin.authenticate(String, String) 
creating LoginContext.");
  |                     LoginContext loginContext = new LoginContext("myauth", 
new SSOCallbackHandler(userid, password));
  |                     log.info("SSOLogin.authenticate(String, String) 
executing login.");
  |                     loginContext.login();
  |                     result = true;
  |             } catch (LoginException e) {
  |                     // A production quality implementation would log this 
message
  |                     log.info("Exception:: " + e.getMessage());
  |                     result = false;
  |                     throw e;
  |             }
  |             log.info("SSOLogin.authenticate(String, String) exiting method 
- Login was " + result);
  |             return result;
  |     }
  | }
  | 

Which depends on a custom callback handler: 


  | public class SSOCallbackHandler implements CallbackHandler {
  |                protected static final Log log = 
LogFactory.getLog(SSOCallbackHandler.class);
  |               
  |                private String username;
  |                private char[] credentials;
  | 
  |                public SSOCallbackHandler(String username, String 
credentials) {
  |                   super();
  |                  
  |                   this.username = username; 
  |                   this.credentials = credentials.toCharArray();
  |                }
  | 
  |                public void handle(Callback callbacks[])throws IOException, 
UnsupportedCallbackException {
  | 
  |                   for (int i = 0; i < callbacks.length; i++) {
  |                      if (callbacks instanceof NameCallback) {
  |                         ((NameCallback) callbacks).setName(username); 
  |                      }
  |                      else if (callbacks instanceof PasswordCallback) {
  |                         ((PasswordCallback) 
callbacks).setPassword(credentials);
  |                      } else {
  |                         throw new UnsupportedCallbackException(callbacks);
  |                      }
  |                   }
  |                }
  |             }
  | 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3986161#3986161

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3986161
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to