Search in sources :

Example 1 with AMLoginModule

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;
}
Also used : AppConfigurationEntry(javax.security.auth.login.AppConfigurationEntry) Configuration(javax.security.auth.login.Configuration) AuthLoginException(com.sun.identity.authentication.spi.AuthLoginException) AMLoginModule(com.sun.identity.authentication.spi.AMLoginModule) AuthLoginException(com.sun.identity.authentication.spi.AuthLoginException) SSOException(com.iplanet.sso.SSOException) SMSException(com.sun.identity.sm.SMSException) SessionException(com.iplanet.dpro.session.SessionException)

Aggregations

SessionException (com.iplanet.dpro.session.SessionException)1 SSOException (com.iplanet.sso.SSOException)1 AMLoginModule (com.sun.identity.authentication.spi.AMLoginModule)1 AuthLoginException (com.sun.identity.authentication.spi.AuthLoginException)1 SMSException (com.sun.identity.sm.SMSException)1 AppConfigurationEntry (javax.security.auth.login.AppConfigurationEntry)1 Configuration (javax.security.auth.login.Configuration)1