org.apache.activemq.artemis.core.server.SecuritySettingPlugin Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
package org.apache.activemq.artemis.core.server;
import java.io.Serializable;
import java.util.Map;
import java.util.Set;
import org.apache.activemq.artemis.core.security.Role;
import org.apache.activemq.artemis.core.settings.HierarchicalRepository;
public interface SecuritySettingPlugin extends Serializable {
/**
* Initialize the plugin with the given configuration options. This method is called by the broker when the file-based
* configuration is read (see {@code org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser#parseSecurity(org.w3c.dom.Element, org.apache.activemq.artemis.core.config.Configuration)}.
* If you're creating/configuring the plugin programmatically then the recommended approach is to simply use the plugin's
* getters/setters rather than this method.
*
* @param options name/value pairs used to configure the SecuritySettingPlugin instance
* @return {@code this} instance
*/
SecuritySettingPlugin init(Map options);
/**
* Clean up all the associated resources associated with this plugin (e.g. LDAP connections, file handles, etc.)
*
* @return {@code this} instance
*/
SecuritySettingPlugin stop();
/**
* Fetch the security role information from the external environment (e.g. file, LDAP, etc.) and return it.
*
* @return the Map's key corresponds to the "match" for the security setting and the corresponding value is the set of
* {@code org.apache.activemq.artemis.core.security.Role} objects defining the appropriate authorization
*/
Map> getSecurityRoles();
/**
* This method is called by the broker during the start-up process. It's for plugins that might need to modify the
* security settings during runtime (e.g. LDAP plugin that uses a listener to receive updates, etc.). Any changes
* made to this {@code HierarchicalRepository} will be reflected in the broker.
*
* @param securityRepository
*/
void setSecurityRepository(HierarchicalRepository> securityRepository);
}