use of com.sun.identity.authentication.spi.AMLoginModule in project OpenAM by OpenRock.
the class AuthUtils method isPureJAASModulePresent.
/**
* Returns whether the auth module is or the auth chain contains pure JAAS
* module(s).
* @param configName a string of the configuratoin name.
* @return 1 for pure JAAS module; -1 for module(s) provided by IS only.
*/
public static int isPureJAASModulePresent(String configName, AMLoginContext amlc) throws AuthLoginException {
if (AuthD.isEnforceJAASThread()) {
return 1;
}
int returnValue = -1;
Configuration ISConfiguration = null;
try {
ISConfiguration = Configuration.getConfiguration();
} catch (Exception e) {
return 1;
}
AppConfigurationEntry[] entries = ISConfiguration.getAppConfigurationEntry(configName);
if (entries == null) {
throw new AuthLoginException("amAuth", AMAuthErrorCode.AUTH_CONFIG_NOT_FOUND, null);
}
// re-use the obtained configuration
amlc.setConfigEntries(entries);
for (int i = 0; i < entries.length; i++) {
String className = entries[i].getLoginModuleName();
if (utilDebug.messageEnabled()) {
utilDebug.message("config entry: " + className);
}
if (pureJAASModuleClasses.contains(className)) {
returnValue = 1;
break;
} else if (ISModuleClasses.contains(className)) {
continue;
}
try {
Object classObject = Class.forName(className, true, Thread.currentThread().getContextClassLoader()).newInstance();
if (classObject instanceof AMLoginModule) {
if (utilDebug.messageEnabled()) {
utilDebug.message(className + " is instance of AMLoginModule");
}
synchronized (ISModuleClasses) {
if (!ISModuleClasses.contains(className)) {
ISModuleClasses.add(className);
}
}
} else {
if (utilDebug.messageEnabled()) {
utilDebug.message(className + " is a pure jaas module");
}
synchronized (pureJAASModuleClasses) {
if (!pureJAASModuleClasses.contains(className)) {
pureJAASModuleClasses.add(className);
}
}
returnValue = 1;
break;
}
} catch (Exception e) {
if (utilDebug.messageEnabled()) {
utilDebug.message("fail to instantiate class for " + className);
}
synchronized (pureJAASModuleClasses) {
if (!pureJAASModuleClasses.contains(className)) {
pureJAASModuleClasses.add(className);
}
}
returnValue = 1;
break;
}
}
return returnValue;
}
Aggregations