虽然大多数认证扩展独立运行,但数据库认证可以在从属角色中运行,允许来自其他认证扩展的用户与数据库中的连接相关联。如果用户具有相同的用户名,则认为用户与数据库中的用户完全相同。具有多个帐户的用户将能够在成功登录后查看每个系统的数据。
要使用数据库认证扩展,需要:
①持的数据库 - 目前为MariaDB,MySQL或PostgreSQL。②有创建新数据库,创建新用户和授予这些用户权限的足够权限。
③Guacamole服务器对数据库的网络访问。
下载数据库认证扩展
数据库认证扩展可与guacamole.war分开使用。数据库认证扩展打包为.tar.gz文件,包含:
mysql /
包含MySQL / MariaDB身份验证扩展,guacamole-auth-jdbc-mysql-0.9.9.jar以及包含设置数据库所需的MySQL特定SQL脚本的模式/目录。
guacamole-auth-jdbc-mysql-0.9.9.jar文件最终需要放在GUACAMOLE_HOME
/ extensions中,而MySQL JDBC驱动程序必须放在GUACAMOLE_HOME / lib中。
扩展中不包括MySQL JDBC驱动程序。您必须从MySQL的网站获取JDBC驱动程序.jar。驱动程序称为“Connector
/ J”,所需的.jar将在.tar.gz归档文件中。
postgresql
/
包含PostgreSQL身份验证扩展,guacamole-auth-jdbc-postgresql-0.9.9.jar,以及包含设置数据库所需的特定于PostgreSQL的SQL脚本的模式/目录。
guacamole-auth-jdbc-postgresql-0.9.9.jar文件最终将需要放在GUACAMOLE_HOME
/ extensions中,而PostgreSQL JDBC驱动程序必须放在GUACAMOLE_HOME / lib中。
PostgreSQL JDBC驱动程序不包括在扩展中。必须从PostgreSQL的网站获取JDBC驱动程序.jar。正确的.jar文件取决于安装的Java版本。
只有归档中的一个目录适用,这取决于是使用MariaDB,MySQL还是PostgreSQL。
数据库认证模块将需要一个数据库,来存储认证数据,和一个用户,来进行数据的访问与操作。您可以使用现有的数据库和现有用户,但为了简单和安全起见,将假设创建的是一个仅由Guacamole使用,并且仅用于此身份验证模块的新数据库和新用户。
需要安装MariaDB,MySQL或PostgreSQL,并且必须具有足够的访问权限才能创建和管理数据库。如果不是这样,请立即安装您选择的数据库。大多数发行版将提供一个方便的MySQL或PostgreSQL软件包,它将为您设置一切,包括根数据库用户(如果适用)。
为了清楚起见,这些指令将数据库称为“guacamole_db”,将用户称为“guacamole_user”,但数据库和用户可以按您喜欢的方式命名。当然,您还应该为您的用户选择一个真正的密码,而不是下面用作占位符的字符串“some_password”。
MySQL
如果使用MySQL,您必须先创建数据库和用户:
创建数据库和用户后,必须通过运行所提供的SQL脚本来应用数据库模式。 这些SQL脚本包含在您从Guacamole网站下载的存档的mysql / schema /目录中。 它们的命名方式使得它们可以使用一个命令按顺序运行:
如果操作成功,则已成功创建所有表,并且现在可以使用数据库。
PostgreSQL
如果使用PostgreSQL,必须首先创建数据库和模式:
一旦数据库存在,您就可以为数据库安全地创建一个新用户,并授予该用户足够的权限来管理数据库中所有表的内容:
安装数据库认证
Guacamole扩展是自包含的.jar文件,位于GUACAMOLE_HOME / extensions目录中。要安装数据库认证扩展,您必须:
1.如果GUACAMOLE_HOME / extensions目录不存在,则创建它。
2.在GUACAMOLE_HOME / extensions中复制guacamole-auth-jdbc-mysql-0.9.9.jar或guacamole-auth-jdbc-postgresql-0.9.9.jar,具体取决于您是使用MySQL
/ MariaDB还是PostgreSQL。
3. 将数据库的JDBC驱动程序复制到GUACAMOLE_HOME / lib。没有为您的数据库的JDBC驱动程序,Guacamole将无法连接和验证用户。
4. 配置Guacamole使用数据库身份验证,如下所述。
您将需要通过重新启动您的servlet容器,重新启动Guacamole。
配置Guacamole进行数据库身份验证
必须将其他属性添加到guacamole.properties以使Guacamole正确连接到数据库。 这些属性特定于正在使用的数据库,必须正确设置以使身份验证工作。
要使用MySQL数据库,您需要指定以下内容:
对于PostgreSQL,属性是相似的,但具有不同的前缀:
接下来描述如何建立与数据库的连接,以及Guacamole在查询数据库时如何认证:
请确保为您创建的数据库用户指定正确的用户名和密码,并指定正确的数据库。
如果这些参数不正确,认证将不起作用。
同时使用Guacamole连接
数据库认证模块提供配置选项以限制连接或连接组。 这些选项通过guacamole.properties设置,并为连接和连接组指定默认并发策略。
通过属性设置的值可以稍后使用管理界面基于每个连接覆盖:
这些属性不是必需的,但是具有上述属性,尝试使用已经在使用的连接或组的用户将被拒绝访问。 默认情况下,允许并发访问。
还可以限制并发访问,使得特定用户可以仅使用连接或分组特定次数。 默认情况下,每个用户的并发使用限制为连接组(以避免允许单个用户耗尽组的内容),但在其他方面不受限制。
此默认行为可以通过guacamole.properties或管理界面中公开的每个连接设置进行修改:
上述属性替换了以前的Guacamole版本使用的“simultaneous”和“duplicate”属性。 旧的属性仍然可以工作,但现在已被弃用。 如果继续使用这些属性,您将在日志中收到警告,通知您其已弃用的状态。
完成安装
Guacamole只会重新读取guacamole.properties并在启动期间加载新安装的扩展,因此在数据库认证生效之前需要重新启动servlet容器。
重新启动您的servlet容器并尝试新的身份验证。
您只需要重新启动servlet容器。
您不需要重新启动guacd。
guacd完全独立于web应用程序,并且不以任何方式处理guacamole.properties或身份验证系统。 由于您已经重新启动servlet容器,重新启动guacd以及技术上不会伤害任何东西,但这样做是完全没有意义的。
如果Guacamole在重新启动servlet容器后没有重新联机,请检查日志。 配置数据库认证扩展时出现的问题将阻止Guacamole启动,并且任何此类错误都将记录在您的servlet容器的日志中
用户
每个用户在guacamole_user表中都有相应的条目。 每个用户都有一个相应的唯一用户名和密码。
salted密码分为两列:一个包含salt,另一个包含使用SHA-256散列的密码。
如果您选择手动设置未更改密码的哈希值,请确保您了解这样做的安全影响。
如果手动创建用户,主要的复杂性是salt,它必须在构造INSERT语句之前确定,但这可以使用变量来处理。
对于MySQL:
这种语句对于创建新用户或更改密码都很有用,特别是如果所有管理员都忘记了他们。
如果您不使用MySQL,或者您使用的是缺少SHA2功能的MySQL版本,则需要手动计算SHA-256值(例如,使用sha256sum命令)。
连接和参数
每个连接在guacamole_connection表中都有一个条目,与参数具有一对多关系,在guacamole_connection_parameter表中存储为名称/值对。
guacamole_connection表只是一个唯一的描述性名称与用于连接的协议的配对。
使用历史
当启动或终止连接时,将分别创建或更新guacamole_connection_history表中的相应条目。 每个条目都与使用连接的用户,连接本身以及连接开始的时间相关联。
如果连接已结束,则还存储结束时间。
用户不太可能需要更新此表,但是如果您想生成Guacamole使用情况的报告,则知道结构是非常有用的。
连接组
每个连接组在guacamole_connection_group表中都有一个条目,与其他组和连接具有一对多关系。
guacamole_connection_group表只是一个具有组类型的唯一和描述性名称的配对,可以是ORGANIZATIONAL或BALANCING。
权限
模式中有三个权限表,它们对应于Guacamole的认证模型中的三种权限类型:系统权限(控制影响整个系统的操作)以及用户和连接权限(控制影响特定现有用户的操作)
或连接。