On 4/23/21 9:17 PM, Mike Jumper wrote:
On Fri, Apr 23, 2021 at 10:10 AM Jelle de Jong <[email protected] <mailto:[email protected]>> wrote:

    Hello everybody,

    I have an external authenticator FreeIPA that I use to authenticate
    many
    services. It has an OTP system built-in that allows the password field
    to be in the form of password+otp.

    This works fine for all services except for Guacamole.

    I was using the pam-auth module with the server connected as an
    ipaclient with sssd auth. This works perfect when not using otp enabled
    password (I can turn this off and on in FreeIPA per user). It shows me
    all connections that were configured in unix-user-mapping.xml.

    I switched to Guacamole 1.3.0 because it has support for password
    prompting for RDP connections?


Yes.

    So I login with password+otp and the login works but none of my
    connections are shown....

    I removed the whole pam-auth and switched to ldap-auth today. It
    seems I
    can not configure my groups and connections with a text file anymore
    and
    I need to use the mysql and web interface? Is there a way to do the
    configuration in a xml file so I can automate it?


The file you were using ("unix-user-mapping.xml") is not a file that Guacamole itself defines. It's a file used only by the PAM extension you were using. Switching from the third-party PAM extension to LDAP will mean that nothing is reading that file.

The standard XML file used by Guacamole independent of extensions is "user-mapping.xml", but this cannot be used with LDAP, nor is the XML file really intended for production use. You will need to define your connections in one of the supported databases and use that alongside LDAP.

As far as automation is concerned, just as the XML isn't aimed at production use, it's a bit of an anti-pattern to automate generation of XML as a means of automating your configuration. Depending on the specifics of what you're looking for, the prescribed route would either be using SQL or writing an extension that automatically defines everything, perhaps without any underlying storage at all.

    I logged in using password only and my connection is shown! Perfect! I
    login with password+otp and my connections are not shown anymore!

    This is part of the debug log:

    [2021-04-23 18:48:59] [info] 18:48:59.186 [http-nio-8080-exec-9] DEBUG
    o.a.g.a.l.AuthenticationProviderService - LDAP bind succeeded for
    "l.gaga" during authentication but failed during data retrieval.

    So the debug shows it does some kind of multiple bind or looking with
    the password provided, which will never work because it is a one time
    password.

    What is going on? I am using an LDAP admin bind with a password. It
    should not need to do multiple binds to authenticate the user with the
    provided user password so I can use the password+otp format.


The authentication and authorization process within Guacamole is two-step:

1) Authenticate the user (determine their identity) - only one extension will ultimately decide this. 2) Authorize the user (determine what they have access to) - all installed extensions are polled to provide data for the user that was authenticated.

The second bind is occurring during that second step, and the current LDAP implementation is indeed written to do this via a separate LDAP connection and bind for each. I'm sure it's possible to restructure things within LDAP such that the authorization step can reuse the connection from the authentication step, but that's just not what the code currently does. There would need to be some changes for the LDAP support to work with a server that requires a unique password for each bind attempt.

Thank you for your answer and great work on Guacamole!

Can you explain this use-case to determination "what the user has access to" especially with 1.3.0 how is the new prompting for credentials take place, I expect this to show up within the guacamole GUI and not as a dialogue in the RDP client, but if I make a new connection with the GUI and leave the username and password empty I do not get prompted.

I think I am also seeing LDAP doing everything twice in my logs, and I have no clue why this is happing.

This is part of the log: https://paste.debian.net/plainh/2b27ad10

How can I disable the "data retrieval" part so it does a successful login?

Kind regards,

Jelle de Jong

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to