On Fri, Nov 22, 2024 at 9:18 AM viktor_krumm <viktor_kr...@proton.me.invalid>
wrote:

>
> Thanks for the breakdown.  I suspected the issue was between the
> interaction of the LDAP module and the SSO component, so that is not
> surprising.  I am not married to LDAP as a source of AAA, so I can trim
> that from the flow.
>
> I did get Keycloak/SSO working easy with Guacamole connections in JBDC.
> It seems like I need to manage the two "components", Authentication and
> Authorization in different modules then.  Outside of trying to do custom
> crafted JWKS tokens/Encrypted JSON - I don't have the knowledge to try and
> do that kind of custom setup.
>
> My understanding of SSO/JBDC together is that you need 2 accounts in 2
> databases.  1 account on the SSO side, 1 account on the JBDC side, with the
> email field used as the link.  Is that the case?
>
>
You don't necessarily need an account on the JDBC side - you can manage
access with group membership, only, if you want, but you can create an
account on the JDBC side, as well, if you like, particularly if you want to
assign permissions at a user-level. The matching of SSO account to JDBC
account is done by the username - if the username returned by SSO matches
one in JDBC, those accounts will be considered the same, and the
permissions from JDBC will apply to the user who is logging in.

In the current release (1.5.5), the matching of usernames is done in a
case-sensitive fashion, so just something to be aware of. The good news is
that SSO systems are usually pretty consistent about returning usernames in
the same case, so you shouldn't run into much issue with SSO + JDBC in that
regard. In version 1.6.0 we're introducing the ability to treat usernames
case-insensitively, which will alleviate issues with systems like LDAP
where users might enter their username in different cases.

Finally, there's an option you can enable in the guacamole.properties file
for the JDBC module that will auto-create JDBC accounts for any user that
is logged in successfully from another module. If you enable this, you'll
get JDBC accounts to match any of your SSO accounts, which you can then use
to assign permissions or group membership. See:
https://guacamole.apache.org/doc/gug/jdbc-auth.html#auto-creating-database-users
.


> Either way, how do you assign connections in SSO then?  Some form of group
> memberships?  I do not see in the documentation where that sort of setup is
> described, though I could have missed it.
>
>
You have several options for this:
* Create matching users in JDBC (either manually or auto-created) and
assign them connections and system permissions individually.
* Create matching users in JDBC (either manually or auto-created), create
groups in the JDBC module, and then add the users to the groups and assign
permissions to the groups.
* Configure your SSO module to return user groups, and then create matching
groups in the JDBC module, and assign the permissions to those groups. SSO
users who log in and have one of the groups configured in the JDBC module
will get the permissions of those groups. In this way, you can avoid having
to create JDBC users at all for your SSO users.

-Nick

Reply via email to