<?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>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-ACLs"/>.</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>
