mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-16 14:33:09 +00:00
(Scott Phillips) Added protection against NPEs during authentication.
git-svn-id: http://scm.dspace.org/svn/repo/branches/dspace-1_5_x@2851 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
@@ -145,11 +145,15 @@ public class LDAPAuthentication
|
||||
{
|
||||
log.info(LogManager.getHeader(context, "auth", "attempting trivial auth of user="+netid));
|
||||
|
||||
// Skip out when no netid or password is given.
|
||||
if (netid == null || password == null)
|
||||
return BAD_ARGS;
|
||||
|
||||
// Locate the eperson
|
||||
EPerson eperson = null;
|
||||
try
|
||||
{
|
||||
eperson = EPerson.findByNetid(context, netid.toLowerCase());
|
||||
eperson = EPerson.findByNetid(context, netid.toLowerCase());
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
|
@@ -97,49 +97,53 @@ public class AuthenticateAction extends AbstractAction
|
||||
String password = request.getParameter("login_password");
|
||||
String realm = request.getParameter("login_realm");
|
||||
|
||||
try
|
||||
{
|
||||
Context context = AuthenticationUtil.Authenticate(objectModel, email,password, realm);
|
||||
// Skip out if no email or password is given.
|
||||
if (email == null || password == null)
|
||||
return null;
|
||||
|
||||
try
|
||||
{
|
||||
Context context = AuthenticationUtil.Authenticate(objectModel, email,password, realm);
|
||||
|
||||
EPerson eperson = context.getCurrentUser();
|
||||
EPerson eperson = context.getCurrentUser();
|
||||
|
||||
if (eperson != null)
|
||||
{
|
||||
// The user has successfully logged in
|
||||
String redirectURL = request.getContextPath();
|
||||
|
||||
if (AuthenticationUtil.isInterupptedRequest(objectModel))
|
||||
{
|
||||
// Resume the request and set the redirect target URL to
|
||||
// that of the originaly interrupted request.
|
||||
redirectURL += AuthenticationUtil.resumeInterruptedRequest(objectModel);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise direct the user to the login page
|
||||
String loginRedirect = ConfigurationManager.getProperty("xmlui.user.loginredirect");
|
||||
redirectURL += (loginRedirect != null) ? loginRedirect.trim() : "";
|
||||
}
|
||||
|
||||
// Authentication successfull send a redirect.
|
||||
final HttpServletResponse httpResponse = (HttpServletResponse) objectModel.get(HttpEnvironment.HTTP_RESPONSE_OBJECT);
|
||||
|
||||
httpResponse.sendRedirect(redirectURL);
|
||||
|
||||
// log the user out for the rest of this current request, however they will be reauthenticated
|
||||
// fully when they come back from the redirect. This prevents caching problems where part of the
|
||||
// request is preformed fore the user was authenticated and the other half after it succedded. This
|
||||
// way the user is fully authenticated from the start of the request.
|
||||
context.setCurrentUser(null);
|
||||
|
||||
return new HashMap();
|
||||
}
|
||||
}
|
||||
catch (SQLException sqle)
|
||||
if (eperson != null)
|
||||
{
|
||||
throw new PatternException("Unable to preform authentication",
|
||||
sqle);
|
||||
// The user has successfully logged in
|
||||
String redirectURL = request.getContextPath();
|
||||
|
||||
if (AuthenticationUtil.isInterupptedRequest(objectModel))
|
||||
{
|
||||
// Resume the request and set the redirect target URL to
|
||||
// that of the originaly interrupted request.
|
||||
redirectURL += AuthenticationUtil.resumeInterruptedRequest(objectModel);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise direct the user to the login page
|
||||
String loginRedirect = ConfigurationManager.getProperty("xmlui.user.loginredirect");
|
||||
redirectURL += (loginRedirect != null) ? loginRedirect.trim() : "";
|
||||
}
|
||||
|
||||
// Authentication successfull send a redirect.
|
||||
final HttpServletResponse httpResponse = (HttpServletResponse) objectModel.get(HttpEnvironment.HTTP_RESPONSE_OBJECT);
|
||||
|
||||
httpResponse.sendRedirect(redirectURL);
|
||||
|
||||
// log the user out for the rest of this current request, however they will be reauthenticated
|
||||
// fully when they come back from the redirect. This prevents caching problems where part of the
|
||||
// request is preformed fore the user was authenticated and the other half after it succedded. This
|
||||
// way the user is fully authenticated from the start of the request.
|
||||
context.setCurrentUser(null);
|
||||
|
||||
return new HashMap();
|
||||
}
|
||||
}
|
||||
catch (SQLException sqle)
|
||||
{
|
||||
throw new PatternException("Unable to preform authentication",
|
||||
sqle);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
@@ -92,9 +92,12 @@ public class LDAPAuthenticateAction extends AbstractAction {
|
||||
String password = request.getParameter("ldap_password");
|
||||
String realm = request.getParameter("login_realm");
|
||||
|
||||
// Skip out of no name or password given.
|
||||
if (username == null || password == null)
|
||||
return null;
|
||||
|
||||
try {
|
||||
Context context = AuthenticationUtil.Authenticate(objectModel,
|
||||
username, password, realm);
|
||||
Context context = AuthenticationUtil.Authenticate(objectModel,username, password, realm);
|
||||
|
||||
EPerson eperson = context.getCurrentUser();
|
||||
|
||||
|
Reference in New Issue
Block a user