/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* under the License.
*/
package org.apache.karaf.jaas.modules.audit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import java.util.Map;
public class LogAuditLoginModule extends AbstractAuditLoginModule {
public static final String LOG_LEVEL_OPTION = "level";
public static final String LOG_LOGGER_OPTION = "logger";
private String level = "INFO";
private Logger logger;
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map sharedState, Map options) {
super.initialize(subject, callbackHandler, sharedState, options);
level = (String) options.get(LOG_LEVEL_OPTION);
logger = LoggerFactory.getLogger((String) options.get(LOG_LOGGER_OPTION));
}
protected synchronized void audit(Action action, String username) {
String actionStr;
switch (action) {
case ATTEMPT: actionStr = "Authentication attempt"; break;
case SUCCESS: actionStr = "Authentication succeeded"; break;
case FAILURE: actionStr = "Authentication failed"; break;
case LOGOUT: actionStr = "Explicit logout"; break;
default: actionStr = action.toString(); break;
}
if (level.equalsIgnoreCase("debug")) {
logger.debug("{} - {}", actionStr, username);
} else if (level.equalsIgnoreCase("trace")) {
logger.trace("{} - {}", actionStr, username);
} else if (level.equalsIgnoreCase("warn")) {
logger.warn("{} - {}", actionStr, username);
} else if (level.equalsIgnoreCase("error")) {
logger.error("{} - {}", actionStr, username);
} else {
logger.info("{} - {}", actionStr, username);
}
}
}