Package org.apache.karaf.jaas.modules.impl

Source Code of org.apache.karaf.jaas.modules.impl.Activator

/*
*  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.impl;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;

import org.apache.karaf.jaas.config.JaasRealm;
import org.apache.karaf.jaas.modules.BackingEngineFactory;
import org.apache.karaf.jaas.modules.EncryptionService;
import org.apache.karaf.jaas.modules.encryption.BasicEncryptionService;
import org.apache.karaf.jaas.modules.ldap.LDAPCache;
import org.apache.karaf.jaas.modules.properties.AutoEncryptionSupport;
import org.apache.karaf.jaas.modules.properties.PropertiesBackingEngineFactory;
import org.apache.karaf.jaas.modules.publickey.PublickeyBackingEngineFactory;
import org.apache.karaf.util.tracker.BaseActivator;
import org.apache.karaf.util.tracker.Managed;
import org.apache.karaf.util.tracker.ProvideService;
import org.apache.karaf.util.tracker.Services;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.service.cm.ManagedService;

@Managed("org.apache.karaf.jaas")
@Services(provides = {
        @ProvideService(JaasRealm.class),
        @ProvideService(BackingEngineFactory.class),
        @ProvideService(EncryptionService.class)
})
public class Activator extends BaseActivator implements ManagedService {

    private static final String ENCRYPTION_NAME = "encryption.name";
    private static final String ENCRYPTION_ENABLED = "encryption.enabled";
    private static final String ENCRYPTION_PREFIX = "encryption.prefix";
    private static final String ENCRYPTION_SUFFIX = "encryption.suffix";
    private static final String ENCRYPTION_ALGORITHM = "encryption.algorithm";
    private static final String ENCRYPTION_ENCODING = "encryption.encoding";

    private static final String EVENTADMIN_ENABLED = "eventadmin.enabled";

    private KarafRealm karafRealm;
    private AutoEncryptionSupport autoEncryptionSupport;

    @Override
    protected void doOpen() throws Exception {
        super.doOpen();
        register(BackingEngineFactory.class, new PropertiesBackingEngineFactory());
        register(BackingEngineFactory.class, new PublickeyBackingEngineFactory());

        Hashtable<String, Object> props = new Hashtable<>();
        props.put(Constants.SERVICE_RANKING, -1);
        props.put("name", "basic");
        register(EncryptionService.class, new BasicEncryptionService(), props);


        Map<String, Object> config = getConfig();

        karafRealm = new KarafRealm(bundleContext, config);
        register(JaasRealm.class, karafRealm);

        autoEncryptionSupport = new AutoEncryptionSupport(config);
    }

    @Override
    protected void doStop() {
        if (autoEncryptionSupport != null) {
            autoEncryptionSupport.destroy();
        }
        super.doStop();
        LDAPCache.clear();
    }

    @Override
    protected void reconfigure() {
        Map<String, Object> config = getConfig();
        if (karafRealm != null) {
            karafRealm.updated(config);
        }
        if (autoEncryptionSupport != null) {
            autoEncryptionSupport.updated(config);
        }
    }

    private Map<String, Object> getConfig() {
        Map<String, Object> config = new HashMap<>();
        populate(config, "detailed.login.exception", "false");
        populate(config, ENCRYPTION_NAME, "");
        populate(config, ENCRYPTION_ENABLED, "false");
        populate(config, ENCRYPTION_PREFIX, "{CRYPT}");
        populate(config, ENCRYPTION_SUFFIX, "{CRYPT}");
        populate(config, ENCRYPTION_ALGORITHM, "MD5");
        populate(config, ENCRYPTION_ENCODING, "hexadecimal");
        populate(config, EVENTADMIN_ENABLED, "true");
        populate(config, "audit.file.enabled", "true");
        populate(config, "audit.file.file", System.getProperty("karaf.data") + "/security/audit.log");
        populate(config, "audit.eventadmin.enabled", "true");
        populate(config, "audit.eventadmin.topic", "org/apache/karaf/login");
        config.put(BundleContext.class.getName(), bundleContext);
        return config;
    }

    private void populate(Map<String, Object> map, String key, String def) {
        map.put(key, getString(key, def));
    }

}
TOP

Related Classes of org.apache.karaf.jaas.modules.impl.Activator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.