<?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>
