All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.enterprise.security.auth.realm.RealmConfig Maven / Gradle / Ivy

/*
 * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package com.sun.enterprise.security.auth.realm;

import com.sun.enterprise.config.serverbeans.AuthRealm;
import com.sun.enterprise.security.SecurityLoggerInfo;

import org.jvnet.hk2.config.types.Property;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * RealmConfig usable by standalone : Admin CLI for creating Realms
 * It has a subset of functionality defined in com.sun.enterprise.security.RealmConfig
 */
public class RealmConfig {

    private static Logger logger =
            SecurityLoggerInfo.getLogger();

    public static void createRealms(String defaultRealm, List realms) {
        createRealms(defaultRealm, realms, null);
    }
    public static void createRealms(String defaultRealm, List realms, String configName) {
        assert(realms != null);

        String goodRealm = null; // need at least one good realm

        for (AuthRealm aRealm : realms) {
            String realmName = aRealm.getName();
            String realmClass = aRealm.getClassname();
            assert (realmName != null);
            assert (realmClass != null);

            try {
                List realmProps = aRealm.getProperty();
                /*V3 Commented ElementProperty[] realmProps =
                    aRealm.getElementProperty();*/
                Properties props = new Properties();
                for (Property realmProp : realmProps) {
                    props.setProperty(realmProp.getName(), realmProp.getValue());
                }
                Realm.instantiate(realmName, realmClass, props, configName);
                if (logger.isLoggable(Level.FINE)) {
                    logger.fine("Configured realm: " + realmName);
                }

                if (goodRealm == null) {
                    goodRealm = realmName;
                }
            } catch (Exception e) {
                logger.log(Level.WARNING,
                           SecurityLoggerInfo.realmConfigDisabledError, realmName);
                logger.log(Level.WARNING, SecurityLoggerInfo.securityExceptionError, e);
            }
        }

        // done loading all realms, check that there is at least one
        // in place and that default is installed, or change default
        // to the first one loaded (arbitrarily).

        if (goodRealm == null) {
            logger.severe(SecurityLoggerInfo.noRealmsError);

        } else {
            try {
                Realm.getInstance(defaultRealm);
            } catch (Exception e) {
                defaultRealm = goodRealm;
            }
            Realm.setDefaultRealm(defaultRealm);
            if (logger.isLoggable(Level.FINE)) {
                logger.fine("Default realm is set to: " + defaultRealm);
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy