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