GUACAMOLE-249: Merge update documentation with respect to FreeRDP 2.x support.
diff --git a/src/chapters/configuring.xml b/src/chapters/configuring.xml
index 3053be3..f8c5e85 100644
--- a/src/chapters/configuring.xml
+++ b/src/chapters/configuring.xml
@@ -1430,15 +1430,20 @@
<section xml:id="rdp-authentication">
<title>Authentication and security</title>
<para>RDP provides authentication through the use of a username, password, and
- optional domain.</para>
+ optional domain. All RDP connections are encrypted.</para>
<para>Most RDP servers will provide a graphical login if the username, password, and
domain parameters are omitted. One notable exception to this is Network Level
Authentication, or NLA, which performs all authentication outside of a desktop
- session, and thus in the absence of a graphical interface. If your server
- requires NLA, you will need to manually choose this as your security mode, and
- you <emphasis>must</emphasis> provide a username and password.</para>
- <para>All RDP connections are encrypted. Higher-grade encryption is available in the
- form of TLS, another possible security mode.</para>
+ session, and thus in the absence of a graphical interface.</para>
+ <important>
+ <para>If your server requires NLA, you <emphasis>must</emphasis> provide a
+ username and password. Leveraging Guacamole's <link
+ xmlns:xlink="http://www.w3.org/1999/xlink" linkend="parameter-tokens"
+ >parameter tokens</link> and <link
+ xmlns:xlink="http://www.w3.org/1999/xlink" linkend="ldap-auth">LDAP
+ support</link> to integrate with Active Directory and automatically pass
+ through credentials is a common configuration.</para>
+ </important>
<informaltable frame="all">
<indexterm>
<primary>parameters</primary>
@@ -1498,42 +1503,68 @@
<secondary>TLS</secondary>
</indexterm>The security mode to use for the RDP connection.
This mode dictates how data will be encrypted and what type
- of authentication will be performed, if any. By default,
- standard RDP encryption is requested, as it is the most
- widely supported.</para>
+ of authentication will be performed, if any. By default, a
+ security mode is selected based on a negotiation process
+ which determines what both the client and the server
+ support.</para>
<para>Possible values are:</para>
<variablelist>
<varlistentry>
- <term><constant>rdp</constant></term>
+ <term><constant>any</constant></term>
<listitem>
- <para>Standard RDP encryption. <emphasis>This is the
- default</emphasis> and should be supported by all
- RDP servers.</para>
+ <para>Automatically select the security mode based
+ on the security protocols supported by both the
+ client and the server. <emphasis>This is the
+ default</emphasis>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>nla</constant></term>
<listitem>
- <para>Network Level Authentication. This mode
- requires the username and password, and performs
- an authentication step before the remote desktop
- session actually starts. If the username and
- password are not given, the connection cannot be
- made.</para>
+ <para>Network Level Authentication, sometimes also
+ referred to as "hybrid" or CredSSP (the protocol
+ that drives NLA). This mode uses TLS encryption
+ and requires the username and password to be given
+ in advance. Unlike RDP mode, the authentication
+ step is performed before the remote desktop
+ session actually starts, avoiding the need for the
+ Windows server to allocate significant resources
+ for users that may not be authorized.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>nla-ext</constant></term>
+ <listitem>
+ <para>Extended Network Level Authentication. This
+ mode is identical to NLA except that an additional
+ "<link xmlns:xlink="http://www.w3.org/1999/xlink"
+ xlink:href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/d0e560a3-25cb-4563-8bdc-6c4cc625bbfc"
+ >Early User Authorization Result</link>" is
+ required to be sent from the server to the client
+ immediately after the NLA handshake is
+ completed.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>tls</constant></term>
<listitem>
- <para>TLS encryption. TLS (Transport Layer Security)
- is the successor to SSL.</para>
+ <para>RDP authentication and encryption implemented
+ via TLS (Transport Layer Security). Also referred
+ to as RDSTLS, the TLS security mode is primarily
+ used in load balanced configurations where the
+ initial RDP server may redirect the connection to
+ a different RDP server.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><constant>any</constant></term>
+ <term><constant>rdp</constant></term>
<listitem>
- <para>Allow the server to choose the type of
- security.</para>
+ <para>Standard RDP encryption. This mode is
+ generally only used for older Windows servers or
+ in cases where a standard Windows login screen is
+ desired. Newer versions of Windows have this mode
+ disabled by default and will only accept NLA
+ unless explicitly configured otherwise.</para>
</listitem>
</varlistentry>
</variablelist>
@@ -2371,9 +2402,6 @@
connect through such a gateway, you will need to provide additional parameters
describing the connection to that gateway, as well as any required
credentials.</para>
- <para><emphasis>This functionality is only available if Guacamole was built against
- FreeRDP 1.1 or later.</emphasis> Older versions of FreeRDP do not have
- support for RDP gateways.</para>
<informaltable frame="all">
<indexterm>
<primary>parameters</primary>
@@ -2408,9 +2436,6 @@
</indexterm>The port of the remote desktop gateway that
should be used as an intermediary for the remote desktop
connection. By default, this will be "443".</para>
- <para><emphasis>If using a version of FreeRDP prior to 1.2, this
- setting has no effect.</emphasis> Older versions of
- FreeRDP use a hard-coded value of "443". </para>
</entry>
</row>
<row>
@@ -2466,10 +2491,6 @@
files for convenience, look through the contents of those files for a string
field called "loadbalanceinfo", as that field is where the required
information/cookie would be specified.</para>
- <para><emphasis>This functionality is only available if Guacamole was built against
- FreeRDP 1.1 or later.</emphasis> Older versions of FreeRDP do not have
- support for load balancers which require additional information during the
- connection process.</para>
<informaltable frame="all">
<indexterm>
<primary>parameters</primary>
diff --git a/src/chapters/installing.xml b/src/chapters/installing.xml
index 54de3b2..8a0a41f 100644
--- a/src/chapters/installing.xml
+++ b/src/chapters/installing.xml
@@ -344,8 +344,9 @@
<row>
<entry><link xl:href="http://www.freerdp.com/">FreeRDP</link></entry>
<entry>
- <para>FreeRDP is required for RDP support. If you do not wish to
- build RDP support, this library is not needed.</para>
+ <para>FreeRDP 2.0.0 or later is required for RDP support. If you do
+ not wish to build RDP support, this library is not
+ needed.</para>
<informaltable frame="none" rowheader="firstcol">
<tgroup cols="2">
<colspec colname="c1" colnum="1" colwidth="1.0*"/>
@@ -353,7 +354,7 @@
<tbody>
<row>
<entry>Debian / Ubuntu package</entry>
- <entry><package>libfreerdp-dev</package></entry>
+ <entry><package>freerdp2-dev</package></entry>
</row>
<row>
<entry>Fedora / CentOS / RHEL package</entry>
@@ -672,7 +673,7 @@
Library status:
- freerdp ............. yes
+ freerdp2 ............ yes
pango ............... yes
libavcodec .......... yes
libavutil ........... yes
diff --git a/src/chapters/troubleshooting.xml b/src/chapters/troubleshooting.xml
index 31c0787..3d253bd 100644
--- a/src/chapters/troubleshooting.xml
+++ b/src/chapters/troubleshooting.xml
@@ -427,22 +427,30 @@
connection in use and try again.</para>
</section>
<section>
- <title>Failed to load cliprdr plugin</title>
- <para>FreeRDP provides a plugin called "cliprdr" which provides
- clipboard support for RDP. libguac-client-rdp loads this
- plugin in order to support clipboard, as well. If this
- plugin could not be loaded, then clipboard support will not
- be available, and the reason will be logged.</para>
+ <title>Support for the CLIPRDR channel (clipboard redirection) could not be
+ loaded</title>
+ <para>FreeRDP provides a plugin which provides clipboard support for RDP. This
+ plugin is typically built into FreeRDP, but some distributions may bundle this
+ separately. libguac-client-rdp loads this plugin in order to support clipboard,
+ as well. If this plugin could not be loaded, then clipboard support will not be
+ available, and the reason will be logged.</para>
</section>
<section>
- <title>Failed to load guac_rdpsnd plugin</title>
- <para>In order to support sound, libguac-client-rdp builds a
- plugin for FreeRDP called "guac_rdpsnd" which must be loaded
- for sound to be available. If libguac-client-rdp cannot load
- this plugin, sound will not work, and the reason will be
- logged. A likely explanation is that libguac-client-rdp was
- built from source, and the directory specified for FreeRDP's
- installation location was incorrect.</para>
+ <title>Cannot create static channel "<replaceable>name</replaceable>": failed to
+ load "guac-common-svc" plugin for FreeRDP</title>
+ <para>RDP provides support for much of its feature set through static virtual
+ channels. Sound support, for example is provided through the "RDPSND" channel.
+ Device redirection for printers and drives is provided through "RDPDR". To
+ support these and other static virtual channels, libguac-client-rdp builds a
+ plugin for FreeRDP called "guac-common-svc" which allows Guacamole to hook into
+ the parts of FreeRDP that support virtual channels.</para>
+ <para>If libguac-client-rdp cannot load this plugin, support for any features which
+ leverage static virtual channels will not work, and the reason will be logged. A
+ likely explanation is that libguac-client-rdp was built from source, and the
+ directory specified for FreeRDP's installation location was incorrect. For
+ FreeRDP to be able to find plugins, those plugins must be placed in the
+ <filename>freerdp2/</filename> subdirectory of whichever directory contains
+ the <filename>libfreerdp2.so</filename> library.</para>
</section>
<section>
<title>Server requested unsupported clipboard data type</title>