<?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-Base64MD5PasswordFile-Provider">
    <title>Base64MD5 Password File <emphasis>(Deprecated)</emphasis></title>
    <para><emphasis>This provider is deprecated and will be removed in a future release.  The
        <link linkend="Java-Broker-Security-MD5-Provider">MD5</link> provider should be used
        instead.</emphasis></para>
    <para> Base64MD5PasswordFile Provider uses local file to store and manage user credentials
        similar to PlainPasswordFile but instead of storing a password the MD5 password digest encoded
        with Base64 encoding is stored in the file. When creating an authentication provider the path
        to the file needs to be specified. If specified file does not exist an empty file is created
        automatically on Authentication Provider creation. On Base64MD5PasswordFile Provider deletion
        the password file is deleted as well.</para>
    <para>For this provider user credentials can be added, removed or changed using
        Management.</para>
    <section>
        <title>Base64MD5 File Format</title>
        <para> The user credentials are stored on the single file line as user name and user password
            pairs separated by colon character. The password is stored MD5 digest/Base64 encoded. This
            file must not be modified externally whilst the Broker is running.</para>
    </section>
</section>
