| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Copyright 2011 ForgeRock AS. |
| | | * Portions Copyright 2011-2014 ForgeRock AS. |
| | | * Portions Copyright 2014 ForgeRock AS |
| | | */ |
| | | |
| | |
| | | |
| | | import static org.opends.messages.CoreMessages.*; |
| | | import static org.opends.server.config.ConfigConstants.*; |
| | | import static org.opends.server.loggers.ErrorLogger.logError; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugEnabled; |
| | | import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; |
| | | |
| | | import java.util.List; |
| | | |
| | | import org.opends.messages.Message; |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.forgerock.i18n.slf4j.LocalizedLogger; |
| | | import org.opends.server.core.DirectoryServer; |
| | | import org.opends.server.loggers.debug.DebugLogger; |
| | | import org.opends.server.loggers.debug.DebugTracer; |
| | | import org.opends.server.types.*; |
| | | import org.opends.server.util.TimeThread; |
| | | |
| | |
| | | /** |
| | | * The tracer object for the debug logger. |
| | | */ |
| | | private static final DebugTracer TRACER = DebugLogger.getTracer(); |
| | | |
| | | |
| | | private static final LocalizedLogger logger = LocalizedLogger.getLocalizedLogger(AuthenticationPolicy.class); |
| | | |
| | | /** |
| | | * Returns the authentication policy for the user provided user. The following |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | if (debugEnabled()) |
| | | logger.trace(e.getMessage(), e); |
| | | |
| | | if (logger.isTraceEnabled()) |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | logger.trace("Could not parse password policy subentry " |
| | | + "DN %s for user %s", v.getValue(), |
| | | userDNString, e); |
| | | } |
| | | |
| | | if (debugEnabled()) |
| | | { |
| | | TRACER.debugError("Could not parse password policy subentry " |
| | | + "DN %s for user %s: %s", v.getValue().toString(), |
| | | userDNString, stackTraceToSingleLineString(e)); |
| | | } |
| | | |
| | | Message message = ERR_PWPSTATE_CANNOT_DECODE_SUBENTRY_VALUE_AS_DN |
| | | .get(v.getValue().toString(), userDNString, e.getMessage()); |
| | | if (useDefaultOnError) |
| | | { |
| | | logError(message); |
| | | logger.error(ERR_PWPSTATE_CANNOT_DECODE_SUBENTRY_VALUE_AS_DN, |
| | | v.getValue().toString(), userDNString, e.getMessage()); |
| | | return DirectoryServer.getDefaultPasswordPolicy(); |
| | | } |
| | | else |
| | | { |
| | | LocalizableMessage message = ERR_PWPSTATE_CANNOT_DECODE_SUBENTRY_VALUE_AS_DN |
| | | .get(v.getValue().toString(), userDNString, e.getMessage()); |
| | | throw new DirectoryException(ResultCode.INVALID_DN_SYNTAX, message, |
| | | e); |
| | | } |
| | |
| | | .getAuthenticationPolicy(subentryDN); |
| | | if (policy == null) |
| | | { |
| | | if (debugEnabled()) |
| | | { |
| | | TRACER.debugError("Password policy subentry %s for user %s " |
| | | logger.trace("Password policy subentry %s for user %s " |
| | | + "is not defined in the Directory Server.", |
| | | String.valueOf(subentryDN), userDNString); |
| | | } |
| | | subentryDN, userDNString); |
| | | |
| | | Message message = ERR_PWPSTATE_NO_SUCH_POLICY.get(userDNString, |
| | | LocalizableMessage message = ERR_PWPSTATE_NO_SUCH_POLICY.get(userDNString, |
| | | String.valueOf(subentryDN)); |
| | | if (useDefaultOnError) |
| | | { |
| | | logError(message); |
| | | //logger.error(message); |
| | | return DirectoryServer.getDefaultPasswordPolicy(); |
| | | } |
| | | else |
| | |
| | | } |
| | | } |
| | | |
| | | if (debugEnabled()) |
| | | { |
| | | TRACER.debugInfo("Using password policy subentry %s for user %s.", |
| | | String.valueOf(subentryDN), userDNString); |
| | | } |
| | | logger.trace("Using password policy subentry %s for user %s.", |
| | | subentryDN, userDNString); |
| | | |
| | | return policy; |
| | | } |
| | |
| | | { |
| | | // This shouldn't happen but if it does debug log |
| | | // this problem and fall back to default policy. |
| | | if (debugEnabled()) |
| | | { |
| | | TRACER.debugError("Found unknown password policy subentry " |
| | | + "DN %s for user %s", subentry.getDN().toString(), |
| | | logger.trace("Found unknown password policy subentry " |
| | | + "DN %s for user %s", subentry.getDN(), |
| | | userDNString); |
| | | } |
| | | break; |
| | | } |
| | | return policy; |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | if (debugEnabled()) |
| | | { |
| | | TRACER.debugError("Could not parse password policy subentry " |
| | | + "DN %s for user %s: %s", subentry.getDN().toString(), |
| | | if (logger.isTraceEnabled()) { |
| | | logger.trace("Could not parse password policy subentry " |
| | | + "DN %s for user %s: %s", subentry.getDN(), |
| | | userDNString, stackTraceToSingleLineString(e)); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | // No authentication policy found, so use the global default. |
| | | if (debugEnabled()) |
| | | { |
| | | TRACER.debugInfo("Using the default password policy for user %s", |
| | | logger.trace("Using the default password policy for user %s", |
| | | userDNString); |
| | | } |
| | | |
| | | return DirectoryServer.getDefaultPasswordPolicy(); |
| | | } |