<?xml version="1.0" encoding="UTF-8"?>

<chapter xml:id="jdbc-auth" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en"
    xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">
    <title>Database authentication</title>
    <indexterm>
        <primary>MySQL</primary>
    </indexterm>
    <indexterm>
        <primary>PostgreSQL</primary>
    </indexterm>
    <indexterm>
        <primary>load balancing</primary>
    </indexterm>
    <para>Guacamole supports authentication via MySQL or PostgreSQL databases through extensions
        available from the project website. Using a database for authentication provides additional
        features, such as the ability to use load balancing groups of connections and a web-based
        administrative interface. Unlike the default, XML-driven authentication module, all changes
        to users and connections take effect immediately; users need not logout and back in to see
        new connections.</para>
    <para>While most authentication extensions function independently, the database authentication
        can act in a subordinate role, allowing users from other authentication extensions to be
        associated with connections within the database. Users are considered identical to users
        within the database if they have the same usernames, and the authentication result of
        another extension will be trusted if it succeeds. A user with an account under multiple
        systems will thus be able to see data from each system after successfully logging in. For
        more information on using the database authentication alongside other mechanisms, see <xref
            linkend="ldap-and-database"/> within <xref linkend="ldap-auth"/>.</para>
    <para>To use the database authentication extension, you will need:</para>
    <orderedlist>
        <listitem>
            <para>A supported database - currently MariaDB, MySQL, or PostgreSQL.</para>
        </listitem>
        <listitem>
            <para>Sufficient permission to create new databases, to create new users, and to grant
                those users permissions.</para>
        </listitem>
        <listitem>
            <para>Network access to the database from the Guacamole server.</para>
        </listitem>
    </orderedlist>
    <important>
        <para>This chapter involves modifying the contents of <varname>GUACAMOLE_HOME</varname> -
            the Guacamole configuration directory. If you are unsure where
                <varname>GUACAMOLE_HOME</varname> is located on your system, please consult <xref
                linkend="configuring-guacamole"/> before proceeding.</para>
    </important>
    <section>
        <title>Downloading the database authentication extension</title>
        <para>The database authentication extension is available separately from the main
                <filename>guacamole.war</filename>. The link for this and all other
            officially-supported and compatible extensions for a particular version of Guacamole are
            provided on the release notes for that version. You can find the release notes for
            current versions of Guacamole here: <link
                xlink:href="http://guacamole.incubator.apache.org/releases/"
                >http://guacamole.incubator.apache.org/releases/</link>.</para>
        <para>The database authentication extension is packaged as a <filename>.tar.gz</filename>
            file containing:</para>
        <variablelist>
            <varlistentry>
                <term><filename>mysql/</filename></term>
                <listitem>
                    <para>Contains the MySQL/MariaDB authentication extension,
                            <filename>guacamole-auth-jdbc-mysql-0.9.10-incubating.jar</filename>,
                        along with a <filename>schema/</filename> directory containing
                        MySQL-specific SQL scripts required to set up the database. The
                            <filename>guacamole-auth-jdbc-mysql-0.9.10-incubating.jar</filename>
                        file will ultimately need to be placed within
                            <filename>GUACAMOLE_HOME/extensions</filename>, while the MySQL JDBC
                        driver must be placed within <filename>GUACAMOLE_HOME/lib</filename>.</para>
                    <para><emphasis>The MySQL JDBC driver is not included with the
                            extension.</emphasis> You must obtain the JDBC driver
                            <filename>.jar</filename> yourself from <link
                            xlink:href="http://dev.mysql.com/downloads/connector/j/">MySQL's
                            website</link>. The driver is known as "Connector/J", and the required
                            <filename>.jar</filename> will be within a <filename>.tar.gz</filename>
                        archive.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><filename>postgresql/</filename></term>
                <listitem>
                    <para>Contains the PostgreSQL authentication extension,
                            <filename>guacamole-auth-jdbc-postgresql-0.9.10-incubating.jar</filename>,
                        along with a <filename>schema/</filename> directory containing
                        PostgreSQL-specific SQL scripts required to set up the database. The
                            <filename>guacamole-auth-jdbc-postgresql-0.9.10-incubating.jar</filename>
                        file will ultimately need to be placed within
                            <filename>GUACAMOLE_HOME/extensions</filename>, while the PostgreSQL
                        JDBC driver must be placed within
                        <filename>GUACAMOLE_HOME/lib</filename>.</para>
                    <para><emphasis>The PostgreSQL JDBC driver is not included with the
                            extension.</emphasis> You must obtain the JDBC driver
                            <filename>.jar</filename> yourself from <link
                            xlink:href="https://jdbc.postgresql.org/download.html#current"
                            >PostgreSQL's website</link>. The proper <filename>.jar</filename> file
                        depends on the version of Java you have installed. </para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>Only one of the directories within the archive will be applicable to you, depending on
            whether you are using MariaDB, MySQL, or PostgreSQL.</para>
    </section>
    <section xml:id="jdbc-auth-database-creation">
        <title>Creating the Guacamole database</title>
        <para>The database authentication module will need a database to store authentication data
            and a user to use only for data access and manipulation. You can use an existing
            database and existing user, but for the sake of simplicity and security, these
            instructions assume you will be creating a new database and new user that will be used
            only by Guacamole and only for this authentication module.</para>
        <para>You need MariaDB, MySQL, or PostgreSQL installed, and must have sufficient access to
            create and administer databases. If this is not the case, install your database of
            choice now. Most distributions will provide a convenient MySQL or PostgreSQL package
            which will set up everything for you, including the root database user, if
            applicable.</para>
        <para>For the sake of clarity, these instructions will refer to the database as
            "guacamole_db" and the user as "guacamole_user", but the database and user can be named
            whatever you like. Naturally, you should also choose a real password for your user
            rather than the string "some_password" used as a placeholder below.</para>
        <section xml:id="jdbc-auth-mysql">
            <title>MySQL</title>
            <para>If using MySQL, you must create your database and user first:</para>
            <informalexample>
                <screen><prompt>$</prompt> mysql -u root -p
<prompt>Enter password:</prompt> <userinput><replaceable>password</replaceable></userinput>
<computeroutput>Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 233
Server version: 5.5.29-0ubuntu0.12.10.1 (Ubuntu)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
</computeroutput>
<prompt>mysql></prompt> <userinput>CREATE DATABASE <replaceable>guacamole_db</replaceable>;</userinput>
<computeroutput>Query OK, 1 row affected (0.00 sec)</computeroutput>

<prompt>mysql></prompt> <userinput>CREATE USER '<replaceable>guacamole_user'</replaceable>@'localhost' IDENTIFIED BY '<replaceable>some_password</replaceable>';</userinput>
<computeroutput>Query OK, 0 rows affected (0.00 sec)</computeroutput>

<prompt>mysql></prompt> <userinput>GRANT SELECT,INSERT,UPDATE,DELETE ON <replaceable>guacamole_db</replaceable>.* TO '<replaceable>guacamole_user'</replaceable>@'localhost';</userinput>
<computeroutput>Query OK, 0 rows affected (0.00 sec)</computeroutput>

<prompt>mysql></prompt> <userinput>FLUSH PRIVILEGES;</userinput>
<computeroutput>Query OK, 0 rows affected (0.02 sec)</computeroutput>

<prompt>mysql></prompt> <userinput>quit</userinput>
<computeroutput>Bye</computeroutput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>Once the database and user are created, the database schema must be applied by
                running the supplied SQL scripts. These SQL scripts are included in the
                    <filename>mysql/schema/</filename> directory of the archive you downloaded from
                the Guacamole website. They are named such that they can be run in order with one
                command:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>ls schema/</userinput>
<computeroutput>001-create-schema.sql  002-create-admin-user.sql  upgrade</computeroutput>
<prompt>$</prompt> <userinput>cat schema/*.sql | mysql -u root -p <replaceable>guacamole_db</replaceable></userinput>
<prompt>Enter password:</prompt> <userinput><replaceable>password</replaceable></userinput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>If the operation is successful, all tables have been created successfully, and the
                database is now ready for use.</para>
            <important>
                <para>If you are upgrading from an older version of Guacamole that lacked support
                    for connection groups (older than 0.8.2), you should instead run the upgrade
                    script located within the <filename>upgrade/</filename> directory:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>ls schema/upgrade/</userinput>
<computeroutput>upgrade-pre-0.8.2.sql   upgrade-pre-0.9.6.sql  upgrade-pre-0.9.8.sql
upgrade-pre-0.9.10.sql  upgrade-pre-0.9.7.sql  upgrade-pre-0.9.9.sql</computeroutput>
<prompt>$</prompt> <userinput>mysql -u root -p <replaceable>guacamole_db</replaceable> &lt; schema/upgrade/upgrade-pre-0.8.2.sql</userinput>
<prompt>Enter password:</prompt> <userinput><replaceable>password</replaceable></userinput>
<prompt>$</prompt></screen>
                    <para>If you are upgrading from a version of Guacamole before 0.9.6, the default
                        permissions associated with new users have changed such that users can
                        change their own passwords. You may, if desired, run the upgrade script to
                        migrate any existing users to the new permissions:</para>
                </informalexample>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>mysql -u root -p <replaceable>guacamole_db</replaceable> &lt; schema/upgrade/upgrade-pre-0.9.6.sql</userinput>
<prompt>Enter password:</prompt> <userinput><replaceable>password</replaceable></userinput>
<prompt>$</prompt></screen>
                </informalexample>
                <para>If you are upgrading from a version of Guacamole before 0.9.7, schema changes
                    regarding support for disabling users and expiring passwords need to be
                    applied:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>mysql -u root -p <replaceable>guacamole_db</replaceable> &lt; schema/upgrade/upgrade-pre-0.9.7.sql</userinput>
<prompt>Enter password:</prompt> <userinput><replaceable>password</replaceable></userinput>
<prompt>$</prompt></screen>
                </informalexample>
                <para>If you are upgrading from a version of Guacamole before 0.9.8, schema changes
                    regarding support for restricting user access times and concurrent connection
                    use need to be applied:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>mysql -u root -p <replaceable>guacamole_db</replaceable> &lt; schema/upgrade/upgrade-pre-0.9.8.sql</userinput>
<prompt>Enter password:</prompt> <userinput><replaceable>password</replaceable></userinput>
<prompt>$</prompt></screen>
                </informalexample>
                <para>If you are upgrading from a version of Guacamole before 0.9.9, schema changes
                    which add indexes improving the performance of connection history searches need
                    to be applied:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>mysql -u root -p <replaceable>guacamole_db</replaceable> &lt; schema/upgrade/upgrade-pre-0.9.9.sql</userinput>
<prompt>Enter password:</prompt> <userinput><replaceable>password</replaceable></userinput>
<prompt>$</prompt></screen>
                </informalexample>
                <para>If you are upgrading from a version of Guacamole before 0.9.10-incubating,
                    schema changes which add support for screen sharing and session affinity
                    need to be applied:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>mysql -u root -p <replaceable>guacamole_db</replaceable> &lt; schema/upgrade/upgrade-pre-0.9.10.sql</userinput>
<prompt>Enter password:</prompt> <userinput><replaceable>password</replaceable></userinput>
<prompt>$</prompt></screen>
                </informalexample>
            </important>
        </section>
        <section xml:id="jdbc-auth-postgresql">
            <title>PostgreSQL</title>
            <para>If using PostgreSQL, the database and schema must be created first:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>createdb <replaceable>guacamole_db</replaceable></userinput>
<prompt>$</prompt> <userinput>ls schema/</userinput>
<computeroutput>001-create-schema.sql  002-create-admin-user.sql</computeroutput>
<prompt>$</prompt> <userinput>cat schema/*.sql | psql -d <replaceable>guacamole_db</replaceable> -f -</userinput>
<computeroutput>CREATE TYPE
CREATE TYPE
CREATE TYPE
CREATE TABLE
CREATE INDEX</computeroutput>
...
<computeroutput>INSERT 0 1
INSERT 0 4
INSERT 0 3</computeroutput>
<prompt>$</prompt></screen>
            </informalexample>
            <para>Once the database exists, you can safely create a new user for the database, and
                grant that user sufficient privileges to manage the contents of all tables in the
                database:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>psql -d <replaceable>guacamole_db</replaceable></userinput>
<computeroutput>psql (9.3.6)
Type "help" for help.
</computeroutput>
<prompt>guacamole=# </prompt><userinput>CREATE USER <replaceable>guacamole_user</replaceable> WITH PASSWORD '<replaceable>some_password</replaceable>';</userinput>
<computeroutput>CREATE ROLE</computeroutput>
<prompt>guacamole=# </prompt><userinput>GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO <replaceable>guacamole_user</replaceable>;</userinput>
<computeroutput>GRANT</computeroutput>
<prompt>guacamole=# </prompt><userinput>GRANT SELECT,USAGE ON ALL SEQUENCES IN SCHEMA public TO <replaceable>guacamole_user</replaceable>;</userinput>
<computeroutput>GRANT</computeroutput>
<prompt>guacamole=# </prompt><userinput>\q</userinput>
<prompt>$</prompt></screen>
            </informalexample>
            <important>
                <para>If you are upgrading from an older version of Guacamole that lacked support
                    disabling users and expiring passwords (older than 0.9.7), you should instead
                    run the upgrade script located within the <filename>upgrade/</filename>
                    directory:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>ls schema/upgrade/</userinput>
<computeroutput>upgrade-pre-0.9.10.sql  upgrade-pre-0.9.8.sql
upgrade-pre-0.9.7.sql   upgrade-pre-0.9.9.sql</computeroutput>
<prompt>$</prompt> <userinput>psql -d <replaceable>guacamole_db</replaceable> -f schema/upgrade/upgrade-pre-0.9.7.sql</userinput>
<computeroutput>ALTER TABLE
ALTER TABLE</computeroutput>
<prompt>$</prompt></screen>
                </informalexample>
                <para>If you are upgrading from a version of Guacamole before 0.9.8, schema
                    changes regarding support for restricting user access times and concurrent
                    connection use need to be applied:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>psql -d <replaceable>guacamole_db</replaceable> -f schema/upgrade/upgrade-pre-0.9.8.sql</userinput>
<computeroutput>ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE</computeroutput>
<prompt>$</prompt></screen>
                </informalexample>
                <para>If you are upgrading from a version of Guacamole before 0.9.9, schema
                    changes which add indexes improving the performance of connection history
                    searches need to be applied:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>psql -d <replaceable>guacamole_db</replaceable> -f schema/upgrade/upgrade-pre-0.9.9.sql</userinput>
<computeroutput>CREATE INDEX
CREATE INDEX
CREATE INDEX</computeroutput>
<prompt>$</prompt></screen>
                </informalexample>
                <para>If you are upgrading from a version of Guacamole before
                    0.9.10-incubating, schema changes which add support for screen sharing
                    and session affinity need to be applied:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>psql -d <replaceable>guacamole_db</replaceable> -f schema/upgrade/upgrade-pre-0.9.10.sql</userinput>
<computeroutput>ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
UPDATE 0
UPDATE 0
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TYPE
CREATE TABLE
CREATE INDEX
CREATE TABLE
CREATE INDEX
CREATE TABLE
CREATE INDEX
CREATE INDEX
ALTER TABLE
ALTER TABLE
ALTER TABLE
CREATE INDEX</computeroutput>
<prompt>$</prompt></screen>
                </informalexample>
            </important>
        </section>
    </section>
    <section xml:id="jdbc-auth-installation">
        <title>Installing database authentication</title>
        <para>Guacamole extensions are self-contained <filename>.jar</filename> files which are
            located within the <filename>GUACAMOLE_HOME/extensions</filename> directory. To install
            the database authentication extension, you must:</para>
        <procedure>
            <step>
                <para>Create the <filename>GUACAMOLE_HOME/extensions</filename> directory, if it
                    does not already exist.</para>
            </step>
            <step>
                <para>Copy <filename>guacamole-auth-jdbc-mysql-0.9.10-incubating.jar</filename>
                    <emphasis>or</emphasis>
                    <filename>guacamole-auth-jdbc-postgresql-0.9.10-incubating.jar</filename> within
                        <filename>GUACAMOLE_HOME/extensions</filename>, depending on whether you are
                    using MySQL/MariaDB or PostgreSQL.</para>
            </step>
            <step>
                <para>Copy the JDBC driver for your database to
                        <filename>GUACAMOLE_HOME/lib</filename>. Without a JDBC driver for your
                    database, Guacamole will not be able to connect and authenticate users.</para>
            </step>
            <step>
                <para>Configure Guacamole to use database authentication, as described below.</para>
            </step>
        </procedure>
        <important>
            <para>You will need to restart Guacamole by restarting your servlet container in order
                to complete the installation. Doing this will disconnect all active users, so be
                sure that it is safe to do so prior to attempting installation. If you do not
                configure the database authentication properly, Guacamole will not start up again
                until the configuration is fixed.</para>
        </important>
        <section xml:id="jdbc-auth-configuration">
            <title>Configuring Guacamole for database authentication</title>
            <para>Additional properties must be added to <filename>guacamole.properties</filename>
                for Guacamole to properly connect to your database. These properties are specific to
                the database being used, and must be set correctly for authentication to
                work.</para>
            <para>To use a MySQL database, you will need to specify the following:</para>
            <informalexample>
                <programlisting># MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: <replaceable>guacamole_db</replaceable>
mysql-username: <replaceable>guacamole_user</replaceable>
mysql-password: <replaceable>some_password</replaceable></programlisting>
                <para>For PostgreSQL, the properties are similar, but with different
                    prefixes:</para>
                <informalexample>
                    <programlisting># PostgreSQL properties
postgresql-hostname: localhost
postgresql-port: 5432
postgresql-database: <replaceable>guacamole_db</replaceable>
postgresql-username: <replaceable>guacamole_user</replaceable>
postgresql-password: <replaceable>some_password</replaceable></programlisting>
                </informalexample>
            </informalexample>
            <para>The properties absolutely required by the database authentication extension are
                relatively few and self-explanatory, describing only how the connection to the
                database is to be established, and how Guacamole will authenticate when querying the
                database:</para>
            <informaltable frame="all">
                <tgroup cols="3">
                    <colspec colname="c1" colnum="1" colwidth="1*"/>
                    <colspec colname="c2" colnum="2" colwidth="1*"/>
                    <colspec colname="c3" colnum="3" colwidth="2*"/>
                    <thead>
                        <row>
                            <entry>MySQL/MariaDB Property</entry>
                            <entry>PostgreSQL Property</entry>
                            <entry>Description</entry>
                        </row>
                    </thead>
                    <tbody>
                        <row>
                            <entry><property>mysql-hostname</property></entry>
                            <entry><property>postgresql-hostname</property></entry>
                            <entry>
                                <para>The hostname or IP address of the server hosting your
                                    database.</para>
                            </entry>
                        </row>
                        <row>
                            <entry><property>mysql-port</property></entry>
                            <entry><property>postgresql-port</property></entry>
                            <entry>
                                <para>The port number of the database to connect to. For MySQL and
                                    MariaDB, this will likely be 3306. For PostgreSQL, this will
                                    likely be 5432.</para>
                            </entry>
                        </row>
                        <row>
                            <entry><property>mysql-database</property></entry>
                            <entry><property>postgresql-database</property></entry>
                            <entry>
                                <para>The name of the database that you created for Guacamole. This
                                    is given as "guacamole_db" in the examples given in this
                                    chapter.</para>
                            </entry>
                        </row>
                        <row>
                            <entry><property>mysql-username</property></entry>
                            <entry><property>postgresql-username</property></entry>
                            <entry>
                                <para>The username of the user that Guacamole should use to connect
                                    to the database. This is given as "guacamole_user" in the
                                    examples given in this chapter.</para>
                            </entry>
                        </row>
                        <row>
                            <entry><property>mysql-password</property></entry>
                            <entry><property>postgresql-password</property></entry>
                            <entry>
                                <para>The password Guacamole should provide when authenticating with
                                    the database. This is given as "some_password" in the examples
                                    given in this chapter.</para>
                            </entry>
                        </row>
                    </tbody>
                </tgroup>
            </informaltable>
            <para>Be sure to specify the correct username and password for the database user you
                created, and to specify the correct database. Authentication will not work if these
                parameters are not correct.</para>
            <section xml:id="jdbc-auth-concurrency">
                <title>Concurrent use of Guacamole connections</title>
                <para>The database authentication module provides configuration options to restrict
                    concurrent use of connections or connection groups. These options are set
                    through <filename>guacamole.properties</filename> and specify the default
                    concurrency policies for connections and connection groups. The values set
                    through the properties can be overridden later on a per-connection basis using
                    the administrative interface:</para>
                <informalexample>
                    <programlisting># MySQL
mysql-default-max-connections: 1
mysql-default-max-group-connections: 1

# PostgreSQL
postgresql-default-max-connections: 1
postgresql-default-max-group-connections: 1</programlisting>
                </informalexample>
                <para>These properties are not required, but with the above properties in place,
                    users attempting to use a connection or group that is already in use will be
                    denied access. By default, concurrent access is allowed.</para>
                <para>Concurrent access can also be restricted such that a particular user may only
                    use a connection or group a certain number of times. By default, per-user
                    concurrent use is limited for connection groups (to avoid allowing a single user
                    to exhaust the contents of the group) but otherwise unrestricted. This default
                    behavior can be modified through <filename>guacamole.properties</filename> or
                    the per-connection settings exposed in the administrative interface:</para>
                <informalexample>
                    <programlisting># MySQL
mysql-default-max-connections-per-user: 0
mysql-default-max-group-connections-per-user: 0

# PostgreSQL
postgresql-default-max-connections-per-user: 0
postgresql-default-max-group-connections-per-user: 0</programlisting>
                </informalexample>
                <para>The above properties replace the "simultaneous" and "duplicate" properties used
                    by prior Guacamole releases. The older properties will still work, but are now
                    deprecated. If you continue to use those properties, you will receive warnings
                    in the logs advising you of their deprecated status and including examples for
                    providing the same behavior with the new properties described above:</para>
                <informalexample>
                    <screen><computeroutput>WARN  o.g.g.a.p.PostgreSQLAuthenticationProvider - The
"postgresql-disallow-simultaneous-connections" property is deprecated.
Use "postgresql-default-max-connections" and
"postgresql-default-max-group-connections" instead.
INFO  o.g.g.a.p.PostgreSQLAuthenticationProvider - To achieve the same
result of setting "postgresql-disallow-simultaneous-connections" to
"false", set "postgresql-default-max-connections" to "0" and
"postgresql-default-max-group-connections" to "0".</computeroutput></screen>
                </informalexample>
                <para>If you wish to impose an absolute limit on the number of connections that can
                    be established through Guacamole, ignoring which users or connections are
                    involved, this can be done as well. By default, Guacamole will impose no such
                    limit:</para>
                <informalexample>
                    <programlisting># MySQL
mysql-absolute-max-connections: 0

# PostgreSQL
postgresql-absolute-max-connections: 0</programlisting>
                </informalexample>
            </section>
        </section>
        <section>
            <title>Completing the installation</title>
            <para>Guacamole will only reread <filename>guacamole.properties</filename> and load
                newly-installed extensions during startup, so your servlet container will need to be
                restarted before the database authentication will take effect. Restart your servlet
                container and give the new authentication a try.</para>
            <para>
                <important>
                    <para>You only need to restart your servlet container. <emphasis>You do not need
                            to restart <package>guacd</package></emphasis>.</para>
                    <para><package>guacd</package> is completely independent of the web application
                        and does not deal with <filename>guacamole.properties</filename> or the
                        authentication system in any way. Since you are already restarting the
                        servlet container, restarting <package>guacd</package> as well technically
                        won't hurt anything, but doing so is completely pointless.</para>
                </important>
            </para>
            <para>If Guacamole does not come back online after restarting your servlet container,
                check the logs. Problems in the configuration of the database authentication
                extension will prevent Guacamole from starting up, and any such errors will be
                recorded in the logs of your servlet container.</para>
        </section>
    </section>
    <section xml:id="jdbc-auth-default-user">
        <title>Logging in</title>
        <indexterm>
            <primary>default user</primary>
        </indexterm>
        <indexterm>
            <primary><systemitem>guacadmin</systemitem></primary>
        </indexterm>
        <para>The default Guacamole user created by the provided SQL scripts is
                "<systemitem>guacadmin</systemitem>", with a default password of
                "<systemitem>guacadmin</systemitem>". Once you have verified that the database
            authentication is working, <emphasis>you should change your password
                immediately</emphasis>.</para>
        <para>More detailed instructions for managing users and connections is given in <xref
                linkend="administration"/>.</para>
    </section>
    <section xml:id="jdbc-auth-schema">
        <title>Modifying data manually</title>
        <indexterm>
            <primary>schema</primary>
        </indexterm>
        <para>If necessary, it is possible to modify the data backing the authentication module
            manually by executing SQL statements against the database. In general use, this will not
            be common, but if you need to bulk-insert a large number of users or connections, or you
            wish to translate an existing configuration automatically, you will need to know how
            everything is laid out at a high level.</para>
        <para>This section assumes knowledge of SQL and your chosen database, and that whatever you
            need to do can be accomplished if only you had high-level information about Guacamole's
            SQL schema.</para>
        <section xml:id="jdbc-auth-schema-users">
            <title>Users</title>
            <indexterm>
                <primary><classname>guacamole_user</classname></primary>
            </indexterm>
            <para>Every user has a corresponding entry in the <classname>guacamole_user</classname>
                table. Each user has a corresponding unique username and salted password. The salted
                password is split into two columns: one containing the salt, and the other
                containing the password hashed with SHA-256.</para>
            <para>The <classname>guacamole_user</classname> table contains the following
                columns:</para>
            <variablelist>
                <varlistentry>
                    <term><property>user_id</property></term>
                    <listitem>
                        <para>The unique integer associated with each user. This value is generated
                            automatically when a new entry is inserted into the
                                <classname>guacamole_user</classname> table.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>username</property></term>
                    <listitem>
                        <para>The unique name associated with each user. This value must be
                            specified manually, and must be different from any existing username in
                            the table. References to users in other tables use the value from
                                <property>user_id</property>, not
                            <property>username</property>.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>password_hash</property></term>
                    <listitem>
                        <para>The result of hashing the user's password concatenated with the
                            contents of <property>password_salt</property> using SHA-256. The salt
                            is appended to the password prior to hashing.</para>
                        <para>Although passwords set through Guacamole will always be salted, it is
                            possible to use unsalted password hashes when inserted manually or
                            through an external system. If <property>password_salt</property> is
                                <constant>NULL</constant>, the <property>password_hash</property>
                            will be handled as a simple unsalted hash of the password.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>password_salt</property></term>
                    <listitem>
                        <para>A 32-byte random value. When a new user is created from the web
                            interface, this value is randomly generated using a
                            cryptographically-secure random number generator.</para>
                        <para>This will always be set for users whose passwords are set through
                            Guacamole, but it is possible to use unsalted password hashes when
                            inserted manually or through an external system. If
                                <property>password_salt</property> is <constant>NULL</constant>, the
                                <property>password_hash</property> will be handled as a simple
                            unsalted hash of the password.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>disabled</property></term>
                    <listitem>
                        <para>Whether login attempts as this user account should be rejected. If
                            this column is set to <constant>TRUE</constant> or
                                <constant>1</constant>, login attempts by this user will be rejected
                            as if the user did not exist. By default, user accounts are not
                            disabled, and login attempts will succeed if the user provides the
                            correct password.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>expired</property></term>
                    <listitem>
                        <para>If set to <constant>TRUE</constant> or <constant>1</constant>,
                            requires that the user reset their password prior to fully logging in.
                            The user will be presented with a password reset form, and will not be
                            allowed to log into Guacamole until the password has been changed. By
                            default, user accounts are not expired, and no password reset will be
                            required upon login.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>access_window_start</property></term>
                    <listitem>
                        <para>The time of day (not date) after which this user account may be used.
                            If <constant>NULL</constant>, this restriction does not apply. If set to
                                non-<constant>NULL</constant>, attempts to log in after the
                            specified time will be allowed, while attempts to log in before the
                            specified time will be denied.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>access_window_end</property></term>
                    <listitem>
                        <para>The time of day (not date) after which this user account may
                                <emphasis>not</emphasis> be used. If <constant>NULL</constant>, this
                            restriction does not apply. If set to non-<constant>NULL</constant>,
                            attempts to log in after the specified time will be denied, while
                            attempts to log in before the specified time will be allowed.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>valid_from</property></term>
                    <listitem>
                        <para>The date (not time of day) after which this user account may be used.
                            If <constant>NULL</constant>, this restriction does not apply. If set to
                                non-<constant>NULL</constant>, attempts to log in after the
                            specified date will be allowed, while attempts to log in before the
                            specified date will be denied.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>valid_until</property></term>
                    <listitem>
                        <para>The date (not time of day) after which this user account may
                                <emphasis>not</emphasis> be used. If <constant>NULL</constant>, this
                            restriction does not apply. If set to non-<constant>NULL</constant>,
                            attempts to log in after the specified date will be denied, while
                            attempts to log in before the specified date will be allowed.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>timezone</property></term>
                    <listitem>
                        <para>The time zone to use when interpreting the
                                <property>access_window_start</property>,
                                <property>access_window_end</property>,
                                <property>valid_from</property>, and
                                <property>valid_until</property> values. This value may be any Java
                                <classname>TimeZone</classname> ID, as defined by <link
                                xlink:href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html#getAvailableIDs()"
                                    ><methodname
                                    >getAvailableIDs()</methodname></link>, though the Guacamole
                            management interface will only present a subset of these time
                            zones.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
            <important>
                <para>If you choose to manually set unsalted password hashes, please be sure you
                    understand the security implications of doing so.</para>
                <para>In the event that your database is compromised, finding the password for a
                        <emphasis>salted</emphasis> hash is computationally infeasible, but finding
                    the password for an <emphasis>unsalted</emphasis> hash is often not. In many
                    cases, the password which corresponds to an unsalted hash can be found simply by
                    entering the hash into a search engine like Google.</para>
            </important>
            <para>If creating a user manually, the main complication is the salt, which must be
                determined before the <command>INSERT</command> statement can be constructed, but
                this can be dealt with using variables. For MySQL:</para>
            <informalexample>
                <programlisting>-- Generate salt
SET @salt = UNHEX(SHA2(UUID(), 256));

-- Create user and hash password with salt
INSERT INTO guacamole_user (username, password_salt, password_hash)
     VALUES ('myuser', @salt, UNHEX(SHA2(CONCAT('mypassword', HEX(@salt)), 256)));</programlisting>
            </informalexample>
            <para>This sort of statement is useful for both creating new users or for changing
                passwords, especially if all administrators have forgotten theirs.</para>
            <para>If you are not using MySQL, or you are using a version of MySQL that lacks the
                    <methodname>SHA2</methodname> function, you will need to calculate the SHA-256
                value manually (by using the <command>sha256sum</command> command, for
                example).</para>
        </section>
        <section xml:id="jdbc-auth-schema-connections">
            <title>Connections and parameters</title>
            <indexterm>
                <primary><classname>guacamole_connection</classname></primary>
            </indexterm>
            <indexterm>
                <primary><classname>guacamole_connection_parameter</classname></primary>
            </indexterm>
            <para>Each connection has an entry in the <classname>guacamole_connection</classname>
                table, with a one-to-many relationship to parameters, stored as name/value pairs in
                the <classname>guacamole_connection_parameter</classname> table.</para>
            <para>The <classname>guacamole_connection</classname> table is simply a pairing of a
                unique and descriptive name with the protocol to be used for the connection. It
                contains the following columns:</para>
            <variablelist>
                <varlistentry>
                    <term><property>connection_id</property></term>
                    <listitem>
                        <para>The unique integer associated with each connection. This value is
                            generated automatically when a new entry is inserted into the
                                <classname>guacamole_connection</classname> table.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>connection_name</property></term>
                    <listitem>
                        <para>The unique name associated with each connection. This value must be
                            specified manually, and must be different from any existing connection
                            name in the same connection group. References to connections in other
                            tables use the value from <property>connection_id</property>, not
                                <property>connection_name</property>.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>protocol</property></term>
                    <listitem>
                        <para>The protocol to use with this connection. This is the name of the
                            protocol that should be sent to <package>guacd</package> when
                            connecting, for example "<constant>vnc</constant>" or
                                "<constant>rdp</constant>".</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>parent_id</property></term>
                    <listitem>
                        <para>The unique integer associated with the connection group containing
                            this connection, or <constant>NULL</constant> if this connection is
                            within the root group.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>max_connections</property></term>
                    <listitem>
                        <para>The maximum number of concurrent connections to allow to this
                            connection at any one time <emphasis>regardless of user</emphasis>.
                                <constant>NULL</constant> will use the default value specified in
                                <filename>guacamole.properties</filename> with the
                                <property>mysql-default-max-connections</property> or
                                <property>postgresql-default-max-connections</property> properties,
                            and a value of <constant>0</constant> denotes unlimited.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>max_connections_per_user</property></term>
                    <listitem>
                        <para>The maximum number of concurrent connections to allow to this
                            connection at any one time <emphasis>from a single user</emphasis>.
                                <constant>NULL</constant> will use the default value specified in
                                <filename>guacamole.properties</filename> with the
                                <property>mysql-default-max-connections</property> or
                                <property>postgresql-default-max-connections</property> properties,
                            and a value of <constant>0</constant> denotes unlimited.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
            <para>As there are potentially multiple parameters per connection, where the names of
                each parameter are completely arbitrary and determined only by the protocol in use,
                every parameter for a given connection has an entry in table
                    <classname>guacamole_connection_parameter</classname> table associated with its
                corresponding connection. This table contains the following columns:</para>
            <variablelist>
                <varlistentry>
                    <term><property>connection_id</property></term>
                    <listitem>
                        <para>The <property>connection_id</property> value from the connection this
                            parameter is for.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>parameter_name</property></term>
                    <listitem>
                        <para>The name of the parameter to set. This is the name listed in the
                            documentation for the protocol specified in the associated
                            connection.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>parameter_value</property></term>
                    <listitem>
                        <para>The value to assign to the parameter named. While this value is an
                            arbitrary string, it must conform to the requirements of the protocol as
                            documented for the connection to be successful.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
            <para>Adding a connection and corresponding parameters is relatively easy compared to
                adding a user as there is no salt to generate nor password to hash:</para>
            <informalexample>
                <programlisting>-- Create connection
INSERT INTO guacamole_connection (connection_name, protocol) VALUES ('<replaceable>test</replaceable>', '<replaceable>vnc</replaceable>');

-- Determine the connection_id
SELECT * FROM guacamole_connection WHERE connection_name = '<replaceable>test</replaceable>' AND parent_id IS NULL;

-- Add parameters to the new connection
INSERT INTO guacamole_connection_parameter VALUES (<replaceable>1</replaceable>, 'hostname', '<replaceable>localhost</replaceable>');
INSERT INTO guacamole_connection_parameter VALUES (<replaceable>1</replaceable>, 'port', '<replaceable>5901</replaceable>');</programlisting>
            </informalexample>
            <section xml:id="jdbc-auth-schema-connection-history">
                <title>Usage history</title>
                <indexterm>
                    <primary><classname>guacamole_connection_history</classname></primary>
                </indexterm>
                <para>When a connection is initiated or terminated, a corresponding entry in the
                        <classname>guacamole_connection_history</classname> table is created or
                    updated respectively. Each entry is associated with the user using the
                    connection, the connection itself, the  <link
                        linkend="jdbc-auth-schema-sharing-profiles">sharing profile</link> in use
                    (if the connection is being shared), and the time the connection started. If the
                    connection has ended, the end time is also stored.</para>
                <para>It is very unlikely that a user will need to update this table, but knowing
                    the structure is potentially useful if you wish to generate a report of
                    Guacamole usage. The <classname>guacamole_connection_history</classname> table
                    has the following columns:</para>
                <variablelist>
                    <varlistentry>
                        <term><property>history_id</property></term>
                        <listitem>
                            <para>The unique integer associated with each history record. This value
                                is generated automatically when a new entry is inserted into the
                                    <classname>guacamole_connection_history</classname>
                                table.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>user_id</property></term>
                        <listitem>
                            <para>The value of the <property>user_id</property> from the entry in
                                    <classname>guacamole_user</classname> associated with the user
                                using the connection. If the user no longer exists, this will be
                                    <constant>NULL</constant>.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>username</property></term>
                        <listitem>
                            <para>The username associated with the user at the time that they used
                                the connection. This username value is not guaranteed to uniquely
                                identify a user, as the original user may be subsequently renamed or
                                deleted.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>connection_id</property></term>
                        <listitem>
                            <para>The value of the <property>connection_id</property> from the entry
                                in <classname>guacamole_connection</classname> associated the
                                connection being used. If the connection associated with the history
                                record no longer exists, this will be
                                <constant>NULL</constant>.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>connection_name</property></term>
                        <listitem>
                            <para>The name associated with the connection at the time that it was
                                used.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>sharing_profile_id</property></term>
                        <listitem>
                            <para>The value of the <property>sharing_profile_id</property> from the
                                entry in <classname>guacamole_sharing_profile</classname> associated
                                the sharing profile being used to access the connection. If the
                                connection is not being shared (no sharing profile is being used),
                                or if the sharing profile associated with the history record no
                                longer exists, this will be <constant>NULL</constant>.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>sharing_profile_name</property></term>
                        <listitem>
                            <para>The name associated with the sharing profile being used to access
                                the connection at the time this history entry was recorded. If the
                                connection is not being shared, this will be
                                    <constant>NULL</constant>.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>start_date</property></term>
                        <listitem>
                            <para>The time at which the connection was started by the user
                                specified. Despite its name, this column also stores time
                                information in addition to the date.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>end_date</property></term>
                        <listitem>
                            <para>The time at which the connection ended. If the connection is still
                                active, the value in this column will be <constant>NULL</constant>.
                                Despite its name, this column also stores time information in
                                addition to the date.</para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </section>
        </section>
        <section xml:id="jdbc-auth-schema-sharing-profiles">
            <title>Sharing profiles and parameters</title>
            <indexterm>
                <primary><classname>guacamole_sharing_profile</classname></primary>
            </indexterm>
            <indexterm>
                <primary><classname>guacamole_sharing_profile_parameter</classname></primary>
            </indexterm>
            <para>Each sharing profile has an entry in the
                    <classname>guacamole_sharing_profile</classname> table, with a one-to-many
                relationship to parameters, stored as name/value pairs in the
                    <classname>guacamole_sharing_profile_parameter</classname> table.</para>
            <para>The <classname>guacamole_sharing_profile</classname> table is simply a pairing of
                a unique and descriptive name with the connection that can be shared using the
                sharing profile, also known as the "primary connection". It contains the following
                columns:</para>
            <variablelist>
                <varlistentry>
                    <term><property>sharing_profile_id</property></term>
                    <listitem>
                        <para>The unique integer associated with each sharing profile. This value is
                            generated automatically when a new entry is inserted into the
                                <classname>guacamole_sharing_profile</classname> table.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>sharing_profile_name</property></term>
                    <listitem>
                        <para>The unique name associated with each sharing profile. This value must
                            be specified manually, and must be different from any existing sharing
                            profile name associated with the same primary connection. References to
                            sharing profiles in other tables use the value from
                                <property>sharing_profile_id</property>, not
                                <property>sharing_profile_name</property>.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>primary_connection_id</property></term>
                    <listitem>
                        <para>The unique integer associated with the primary connection. The
                            "primary connection" is the connection which can be shared using this
                            sharing profile.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
            <para>As there are potentially multiple parameters per sharing profile, where the names
                of each parameter are completely arbitrary and determined only by the protocol
                associated with the primary connection, every parameter for a given sharing profile
                has an entry in the <classname>guacamole_sharing_profile_parameter</classname> table
                associated with its corresponding sharing profile. This table contains the following
                columns:</para>
            <variablelist>
                <varlistentry>
                    <term><property>sharing_profile_id</property></term>
                    <listitem>
                        <para>The <property>sharing_profile_id</property> value from the entry in
                            the <classname>guacamole_sharing_profile</classname> table for the
                            sharing profile this parameter applies to.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>parameter_name</property></term>
                    <listitem>
                        <para>The name of the parameter to set. This is the name listed in the
                            documentation for the protocol of the primary connection of the
                            associated sharing profile.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>parameter_value</property></term>
                    <listitem>
                        <para>The value to assign to the parameter named. While this value is an
                            arbitrary string, it must conform to the requirements of the protocol as
                            documented.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </section>
        <section xml:id="jdbc-auth-schema-connection-groups">
            <title>Connection groups</title>
            <indexterm>
                <primary><classname>guacamole_connection_group</classname></primary>
            </indexterm>
            <para>Each connection group has an entry in the
                    <classname>guacamole_connection_group</classname> table, with a one-to-many
                relationship to other groups and connections.</para>
            <para>The <classname>guacamole_connection_group</classname> table is simply a pairing of
                a unique and descriptive name with a group type, which can be either
                    <type>ORGANIZATIONAL</type> or <type>BALANCING</type>. It contains the following
                columns:</para>
            <variablelist>
                <varlistentry>
                    <term><property>connection_group_id</property></term>
                    <listitem>
                        <para>The unique integer associated with each connection group. This value
                            is generated automatically when a new entry is inserted into the
                                <classname>guacamole_connection_group</classname> table.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>connection_group_name</property></term>
                    <listitem>
                        <para>The unique name associated with each connection group. This value must
                            be specified manually, and must be different from any existing
                            connection group name in the same connection group. References to
                            connections in other tables use the value from
                                <property>connection_group_id</property>, not
                                <property>connection_group_name</property>.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>type</property></term>
                    <listitem>
                        <para>The type of this connection group. This can be either
                                <type>ORGANIZATIONAL</type> or <type>BALANCING</type>.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>parent_id</property></term>
                    <listitem>
                        <para>The unique integer associated with the connection group containing
                            this connection group, or <constant>NULL</constant> if this connection
                            group is within the root group.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>max_connections</property></term>
                    <listitem>
                        <para>The maximum number of concurrent connections to allow to this
                            connection group at any one time <emphasis>regardless of
                            user</emphasis>. <constant>NULL</constant> will use the default value
                            specified in <filename>guacamole.properties</filename> with the
                                <property>mysql-default-max-connections</property> or
                                <property>postgresql-default-max-connections</property> properties,
                            and a value of <constant>0</constant> denotes unlimited. This only has
                            an effect on <type>BALANCING</type> groups.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>max_connections_per_user</property></term>
                    <listitem>
                        <para>The maximum number of concurrent connections to allow to this
                            connection group at any one time <emphasis>from a single
                            user</emphasis>. <constant>NULL</constant> will use the default value
                            specified in <filename>guacamole.properties</filename> with the
                                <property>mysql-default-max-connections</property> or
                                <property>postgresql-default-max-connections</property> properties,
                            and a value of <constant>0</constant> denotes unlimited. This only has
                            an effect on <type>BALANCING</type> groups.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><property>enable_session_affinity</property></term>
                    <listitem>
                        <para>Whether session affinity should apply to this connection group. If
                            this column is set to <constant>TRUE</constant> or
                                <constant>1</constant>, users will be consistently routed to the
                            same underlying connection until they log out. The normal balancing
                            behavior will only apply for each user's first connection attempt during
                            any one Guacamole session. By default, session affinity is not enabled,
                            and connections will always be balanced across the entire connection
                            group. This only has an effect on <type>BALANCING</type> groups.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
            <para>Adding a connection group is even simpler than adding a new connection as there
                are no associated parameters stored in a separate table:</para>
            <informalexample>
                <programlisting>-- Create connection group
INSERT INTO guacamole_connection_group (connection_group_name, type)
     VALUES ('<replaceable>test</replaceable>', '<replaceable>ORGANIZATIONAL</replaceable>');</programlisting>
            </informalexample>
        </section>
        <section xml:id="jdbc-auth-schema-permissions">
            <title>Permissions</title>
            <para>There are three permissions tables in the schema which correspond to the three
                types of permissions in Guacamole's authentication model: system permissions, which
                control operations that affect the system as a whole, and user and connection
                permissions, which control operations that affect specific, existing users or
                connections respectively.</para>
            <section xml:id="jdbc-auth-schema-system-permissions">
                <title>System permissions</title>
                <indexterm>
                    <primary><classname>guacamole_system_permission</classname></primary>
                </indexterm>
                <para>System permissions are defined by entries in the
                        <classname>guacamole_system_permission</classname> table. Each entry grants
                    permission for a specific user to perform a specific system operation.</para>
                <para>The <classname>guacamole_system_permission</classname> table contains the
                    following columns:</para>
                <variablelist>
                    <varlistentry>
                        <term><property>user_id</property></term>
                        <listitem>
                            <para>The value of the <property>user_id</property> column of the entry
                                associated with the user owning this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>permission</property></term>
                        <listitem>
                            <para>The permission being granted. This column can have one of three
                                possible values: <constant>ADMINISTER</constant>, which grants the
                                ability to administer the entire system (essentially a wildcard
                                permission), <constant>CREATE_CONNECTION</constant>, which grants
                                the ability to create connections,
                                    <constant>CREATE_CONNECTION_GROUP</constant>, which grants the
                                ability to create connections groups, or
                                    <constant>CREATE_USER</constant>, which grants the ability to
                                create users.</para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </section>
            <section xml:id="jdbc-auth-schema-user-permissions">
                <title>User permissions</title>
                <indexterm>
                    <primary><classname>guacamole_user_permission</classname></primary>
                </indexterm>
                <para>User permissions are defined by entries in the
                        <classname>guacamole_user_permission</classname> table. Each entry grants
                    permission for a specific user to perform a specific operation on another
                    existing user.</para>
                <para>The <classname>guacamole_user_permission</classname> table contains the
                    following columns:</para>
                <variablelist>
                    <varlistentry>
                        <term><property>user_id</property></term>
                        <listitem>
                            <para>The value of the <property>user_id</property> column of the entry
                                associated with the user owning this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>affected_user_id</property></term>
                        <listitem>
                            <para>The value of the <property>user_id</property> column of the entry
                                associated with the user <emphasis>affected</emphasis> by this
                                permission. This is the user that would be the object of the
                                operation represented by this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>permission</property></term>
                        <listitem>
                            <para>The permission being granted. This column can have one of four
                                possible values: <constant>ADMINISTER</constant>, which grants the
                                ability to add or remove permissions which affect the user,
                                    <constant>READ</constant>, which grants the ability to read data
                                associated with the user, <constant>UPDATE</constant>, which grants
                                the ability to update data associated with the user, or
                                    <constant>DELETE</constant>, which grants the ability to delete
                                the user.</para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </section>
            <section xml:id="jdbc-auth-schema-connection-permissions">
                <title>Connection permissions</title>
                <indexterm>
                    <primary><classname>guacamole_connection_permission</classname></primary>
                </indexterm>
                <para>Connection permissions are defined by entries in the
                        <classname>guacamole_connection_permission</classname> table. Each entry
                    grants permission for a specific user to perform a specific operation on an
                    existing connection.</para>
                <para>The <classname>guacamole_connection_permission</classname> table contains the
                    following columns:</para>
                <variablelist>
                    <varlistentry>
                        <term><property>user_id</property></term>
                        <listitem>
                            <para>The value of the <property>user_id</property> column of the entry
                                associated with the user owning this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>connection_id</property></term>
                        <listitem>
                            <para>The value of the <property>connection_id</property> column of the
                                entry associated with the connection affected by this permission.
                                This is the connection that would be the object of the operation
                                represented by this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>permission</property></term>
                        <listitem>
                            <para>The permission being granted. This column can have one of four
                                possible values: <constant>ADMINISTER</constant>, which grants the
                                ability to add or remove permissions which affect the connection,
                                    <constant>READ</constant>, which grants the ability to read data
                                associated with the connection (a prerequisite for connecting),
                                    <constant>UPDATE</constant>, which grants the ability to update
                                data associated with the connection, or <constant>DELETE</constant>,
                                which grants the ability to delete the connection.</para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </section>
            <section xml:id="jdbc-auth-schema-sharing-profile-permissions">
                <title>Sharing profile permissions</title>
                <indexterm>
                    <primary><classname>guacamole_sharing_profile_permission</classname></primary>
                </indexterm>
                <para>Sharing profile permissions are defined by entries in the
                        <classname>guacamole_sharing_profile_permission</classname> table. Each
                    entry grants permission for a specific user to perform a specific operation on
                    an existing sharing profile.</para>
                <para>The <classname>guacamole_sharing_profile_permission</classname> table contains
                    the following columns:</para>
                <variablelist>
                    <varlistentry>
                        <term><property>user_id</property></term>
                        <listitem>
                            <para>The value of the <property>user_id</property> column of the entry
                                associated with the user owning this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>sharing_profile_id</property></term>
                        <listitem>
                            <para>The value of the <property>sharing_profile_id</property> column of
                                the entry associated with the sharing profile affected by this
                                permission. This is the sharing profile that would be the object of
                                the operation represented by this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>permission</property></term>
                        <listitem>
                            <para>The permission being granted. This column can have one of four
                                possible values: <constant>ADMINISTER</constant>, which grants the
                                ability to add or remove permissions which affect the sharing
                                profile, <constant>READ</constant>, which grants the ability to read
                                data associated with the sharing profile (a prerequisite for using
                                the sharing profile to share an active connection),
                                    <constant>UPDATE</constant>, which grants the ability to update
                                data associated with the sharing profile, or
                                    <constant>DELETE</constant>, which grants the ability to delete
                                the sharing profile.</para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </section>
            <section xml:id="jdbc-auth-schema-connection-group-permissions">
                <title>Connection group permissions</title>
                <indexterm>
                    <primary><classname>guacamole_connection_group_permission</classname></primary>
                </indexterm>
                <para>Connection group permissions are defined by entries in the
                        <classname>guacamole_connection_group_permission</classname> table. Each
                    entry grants permission for a specific user to perform a specific operation on
                    an existing connection group.</para>
                <para>The <classname>guacamole_connection_group_permission</classname> table
                    contains the following columns:</para>
                <variablelist>
                    <varlistentry>
                        <term><property>user_id</property></term>
                        <listitem>
                            <para>The value of the <property>user_id</property> column of the entry
                                associated with the user owning this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>connection_group_id</property></term>
                        <listitem>
                            <para>The value of the <property>connection_group_id</property> column
                                of the entry associated with the connection group affected by this
                                permission. This is the connection group that would be the object of
                                the operation represented by this permission.</para>
                        </listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><property>permission</property></term>
                        <listitem>
                            <para>The permission being granted. This column can have one of four
                                possible values: <constant>ADMINISTER</constant>, which grants the
                                ability to add or remove permissions which affect the connection
                                group, <constant>READ</constant>, which grants the ability to read
                                data associated with the connection group,
                                    <constant>UPDATE</constant>, which grants the ability to update
                                data associated with the connection group, or
                                    <constant>DELETE</constant>, which grants the ability to delete
                                the connection group (and implicitly its contents).</para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </section>
        </section>
    </section>
</chapter>
