You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-user@portals.apache.org by Dmitry Olyenyov <de...@nm.ru> on 2003/10/23 13:04:08 UTC

(Jetspeed NTLM) need little help

Hi guys!

I'm trying to make Jetspeed to get usernames from NTLM with jcifs.

Here is my class that overrides TurbineAuthentication:
----
package kz.alb.portal;

import org.apache.jetspeed.services.security.turbine.TurbineAuthentication;
import org.apache.jetspeed.services.security.*;
import org.apache.jetspeed.services.JetspeedUserManagement;
import org.apache.jetspeed.services.JetspeedSecurity;
import org.apache.jetspeed.services.resources.JetspeedResources;
import org.apache.jetspeed.services.rundata.JetspeedRunDataService;
import org.apache.jetspeed.om.security.JetspeedUser;
import org.apache.jetspeed.om.security.UserNamePrincipal;

import java.util.Date;


/**
  * $Id:$
  */
public class NTLMPortalAuthentication extends TurbineAuthentication {
     /** The JetspeedRunData Service. */
     private JetspeedRunDataService runDataService = null;

     private final static String CONFIG_ANONYMOUS_USER = "user.anonymous";
     String anonymousUser = "anon";
     private final static String CACHING_ENABLE = "caching.enable";
     private boolean cachingEnable = true;


     /**
      * Given a public credential(username) and private 
credential(password),
      * perform authentication. If authentication succeeds, a 
<code>JetspeedUser</code>
      * is returned representing the authenticated subject.
      *
      * @param username a public credential of the subject to be 
authenticated.
      * @param password a private credentialof the subject to be 
authenticated.
      * @return a <code>JetspeedUser</code> object representing the 
authenticated subject.
      * @exception LoginException when general security provider failure.
      * @exception FailedLoginException when the authentication failed.
      * @exception AccountExpiredException when the subject's account is 
expired.
      * @exception CredentialExpiredException when the subject's 
credential is expired.
      */
     public JetspeedUser login(String username, String password)
             throws LoginException {
         JetspeedUser user = null;

         username = getRunData().getRequest().getRemoteUser();

         System.out.println("USERNAME1: " + username);

         username = username.substring(username.indexOf('\\') + 1);// 
Cut off NT domain name
         System.out.println("USERNAME2: " + username);

         username = JetspeedSecurity.convertUserName(username);
         System.out.println("USERNAME3: " + username);

         try {
             user = JetspeedUserManagement.getUser(new 
UserNamePrincipal(username));
             System.out.println("user found! " + user.getName());
         } catch(UnknownUserException e) {   // If user not in database 
then add it.
             try {
                 System.out.println("user not found, creating");
                 if(username != null && !username.equals("")) {
                     JetspeedUser newUser = 
JetspeedSecurity.getUserInstance();
                     newUser.setLastLogin(new Date(0));
                     newUser.setUserName(username);
                     newUser.setCreateDate(new Date());
                     newUser.setConfirmed(JetspeedResources.CONFIRM_VALUE);
                     System.out.println("user created: " + 
newUser.toString());

                     JetspeedSecurity.addUser(newUser);

                     System.out.println("user added: " + 
newUser.toString());
                 }
             } catch(JetspeedSecurityException e1) {
                 throw new LoginException(e.toString());
             }
         } catch(JetspeedSecurityException e) {
             throw new LoginException(e.toString());
         }

         // Mark the user as being logged in.
         user.setHasLoggedIn(new Boolean(true));


         System.out.println("Finishing");
         // Set the last_login date in the database.
         try {
             user.updateLastLogin();
             putUserIntoContext(user);
             if(cachingEnable) {
                 JetspeedSecurityCache.load(username);
             }
         } catch(Exception e) {
             putUserIntoContext(JetspeedSecurity.getAnonymousUser());
             throw new LoginException("Failed to update last login ", e);
         }

         return user;

     }

}
----

When I input any username that is already in database, everything works 
fine. When I log in under some user that is not exists in database I 
expect that user will be created in db, but it is not happening.

Here is the log:

----
[23 ??? 2003 17:49:49  INFO] - USERNAME1: ALB\Stealthy
[23 ??? 2003 17:49:49  INFO] - USERNAME2: Stealthy
[23 ??? 2003 17:49:49  INFO] - USERNAME3: Stealthy
[23 ??? 2003 17:49:49  INFO] - user not found, creating
[23 ??? 2003 17:49:49  INFO] - user created: 
org.apache.jetspeed.om.security.BaseJetspeedUser@6bcef1
[23 ??? 2003 17:49:49 DEBUG] - JetspeedRunDataService: accessing rundata 
org.apache.jetspeed.services.rundata.DefaultJetspeedRunData@b2f2d6 for 
thread: Thread[Thread-8,5,jboss]
[23 ??? 2003 17:49:49 DEBUG] - CapabilityMap: User-agent: Mozilla/4.0 
(compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705) mapped to
----

I have no idea what is happening inside of 
JetspeedSecurity.addUser(newUser) but where is no output for next debug 
line: "user added" and the user is not added in database.

Can anybody halp me with this issue?..

--
  With best regards, Dmitry



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-user-help@jakarta.apache.org