<?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-Security-MD5-Provider">
    <title>MD5 Provider</title>

    <para> MD5 Provider  uses the Broker configuration itself to store the database of
        users (unlike the <link linkend="Java-Broker-Security-Base64MD5PasswordFile-Provider">Base64MD5 Password File</link>, there is no separate password file). Rather than store the
        unencrypted user password (as the Plain provider does) it instead stores the MD5 password
        digest.  This can be further encrypted using the
        facilities described in <xref linkend="Java-Broker-Security-Configuration-Encryption"/>.</para>
    <para>For this provider user credentials can be added, removed or changed using
        Management.</para>
</section>
