<?xml version="1.0"?>
<!--

 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.

-->

<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="Java-Broker-Concepts-Other-Services">
<title>Other Services</title>
    <para>
        The Broker can also have <emphasis>Access Control Providers</emphasis>,
        <emphasis>Connection Limit Providers</emphasis>, <emphasis>Group Providers</emphasis>,
        <emphasis>Keystores</emphasis>, <emphasis>Trustores</emphasis> and [Management] <emphasis>Plugins</emphasis> configured.
    </para>

    <section xml:id="Java-Broker-Concepts-Access-Control-Providers">
        <title>Access Control Providers</title>
        <para><emphasis>Access Control Providers</emphasis> are used to authorize various operations relating to Broker objects.</para>
        <para>Access Control Provider configuration and management details are covered in <xref linkend="Java-Broker-Security-AccessControlProviders"/>.</para>
    </section>

    <section xml:id="Java-Broker-Concepts-Connection-Limit-Providers">
        <title>Connection Limit Providers</title>
        <para><emphasis>Connection Limit Providers</emphasis> are used to limit the amount of connections that
            user could open on AMQP ports.</para>
        <para>Connection Limit Providers configuration and management details are covered in
            <xref linkend="Java-Broker-Security-ConnectionLimitProviders"/>.</para>
    </section>

    <section xml:id="Java-Broker-Concepts-Group-Providers">
        <title>Group Providers</title>
        <para><emphasis>Group Providers</emphasis> are used to aggregate authenticated user principals into groups
        which can be then be used in Access Control rules applicable to the whole group.</para>
        <para>Group Provider configuration and management is covered in <xref linkend="Java-Broker-Security-Group-Providers"/>.</para>
    </section>

    <section xml:id="Java-Broker-Concepts-Keystores">
        <title>Keystores</title>
        <para><emphasis>Keystores</emphasis> are used to configure SSL private and public keys and certificates
        for the SSL transports on Ports.</para>
        <para>Keystore configuration and management is covered in <xref linkend="Java-Broker-Management-Managing-Keystores"/>.</para>
    </section>

    <section xml:id="Java-Broker-Concepts-Truststores">
        <title>Truststores</title>
        <para><emphasis>Truststores</emphasis> are used to configure SSL certificates for trusting Client Certificate
            on SSL ports or making SSL connections to other external services like LDAP, etc.</para>
        <para>Truststore configuration and management is covered in <xref linkend="Java-Broker-Management-Managing-Truststores"/>.</para>
    </section>

    <section xml:id="Java-Broker-Concepts-Loggers">
        <title>Loggers</title>
        <para><emphasis>Loggers</emphasis> are responsible for producing a log of events from either the Broker as a whole, or
            an individual Virtualhost. These are described in <xref linkend="Java-Broker-Runtime-Logging"/>.</para>
    </section>

</section>
