[
https://issues.apache.org/jira/browse/GUACAMOLE-2051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17950389#comment-17950389
]
sbcbus commented on GUACAMOLE-2051:
-----------------------------------
So I have tried adding some logging statements to
`AuthenticationProviderService.java` to maybe help me figure out what's going
on. I am not proficient in Java so not sure if I am printing out a "Map" right,
but tried this section:
{code:java}
...
private Map<String, String> getUserTokens(ConnectedLDAPConfiguration config,
Credentials credentials)
throws GuacamoleException { // Get attributes from
configuration information
logger.info("LDAP: Getting user attributes...");
Collection<String> attrList = config.getAttributes(); // If
there are no attributes there is no reason to search LDAP
if (attrList.isEmpty())
{
logger.error("LDAP: there are no attributes found or configured.");
return Collections.<String, String>emptyMap();
} // Build LDAP query parameters
String[] attrArray = attrList.toArray(new String[attrList.size()]);
logger.info("LDAP: \"{}\" ", Arrays.toString(attrArray));
Map<String, String> tokens = new HashMap<>();
try { // Get LDAP attributes by querying LDAP
Entry userEntry =
config.getLDAPConnection().lookup(config.getBindDN(), attrArray);
if (userEntry == null) {
logger.info("LDAP: userEntry is null");
return Collections.<String, String>emptyMap();
} Collection<Attribute> attributes =
userEntry.getAttributes();
if (attributes == null)
{
logger.info("LDAP: no attributes found");
return Collections.<String, String>emptyMap();
} // Convert each retrieved attribute into a
corresponding token
for (Attribute attr : attributes) {
logger.info("LDAP: found attributes...");
logger.info("LDAP: LDAP ATTRIBUTE: \"{}\" - LDAP VALUE:
\"{}\".", attr.getId(), attr.getString());
tokens.put(TokenName.canonicalize(attr.getId(),
LDAP_TOKEN_PREFIX), attr.getString());
} String mapString = tokens.toString();
logger.info("LDAP: MAP: \"{}\" ", mapString);
for (Map.Entry entry : tokens.entrySet())
{
logger.info("key: " + entry.getKey() + "; value: " +
entry.getValue());
}
}
catch (LdapException e) {
throw new GuacamoleServerException("Could not query LDAP user
attributes.", e);
} // Extract the domain (ie: Windows / Active Directory domain)
from the
// user's credentials
String domainName = getUserDomain(credentials);
if (domainName != null)
tokens.put(LDAP_DOMAIN_TOKEN, domainName); return tokens;
}
...
{code}
And get the following output (sanitized). It shows the attributes being read,
but then the map is empty so any tips on how to show that or another method to
print out all the LDAP attributes?
{noformat}
22:53:23.798 [http-nio-8080-exec-10] DEBUG
o.a.g.a.l.AuthenticationProviderService - LDAP server "ldaps1.domain.edu"
matched username "sbarnhart" as "sbarnhart".
22:53:24.632 [http-nio-8080-exec-10] INFO
o.a.g.a.l.AuthenticationProviderService - User "sbarnhart" was successfully
authenticated by LDAP server "ldaps.bcd.it.osu.edu".
22:53:25.917 [http-nio-8080-exec-10] INFO
o.a.g.a.l.AuthenticationProviderService - LDAP: Getting user attributes...
22:53:25.917 [http-nio-8080-exec-10] INFO
o.a.g.a.l.AuthenticationProviderService - LDAP:
"[OSUrdpWS01,OSUrdpWS02,OSUrdpWS03,cn]"
22:53:25.937 [http-nio-8080-exec-10] INFO
o.a.g.a.l.AuthenticationProviderService - LDAP: MAP: "{}"
22:53:29.966 [http-nio-8080-exec-6] DEBUG
o.a.g.a.l.AuthenticationProviderService - LDAP server "ldaps2.domain.edu"
matched username "sbarnhart" as "sbarnhart".
22:53:30.166 [http-nio-8080-exec-6] INFO
o.a.g.a.l.AuthenticationProviderService - User "sbarnhart" was successfully
authenticated by LDAP server "ldaps.bcd.it.osu.edu".
22:53:30.946 [http-nio-8080-exec-6] INFO
o.a.g.a.l.AuthenticationProviderService - LDAP: Getting user attributes...
22:53:30.946 [http-nio-8080-exec-6] INFO
o.a.g.a.l.AuthenticationProviderService - LDAP:
"[OSUrdpWS01,OSUrdpWS02,OSUrdpWS03,cn]"
22:53:30.956 [http-nio-8080-exec-6] INFO
o.a.g.a.l.AuthenticationProviderService - LDAP: MAP: "{}" {noformat}
> LDAP user attributes do not work when specified in ldap-servers.yml, at all
> with 1.6.0+
> ---------------------------------------------------------------------------------------
>
> Key: GUACAMOLE-2051
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-2051
> Project: Guacamole
> Issue Type: Bug
> Components: guacamole-auth-ldap
> Affects Versions: 1.5.5
> Environment: Docker
> Reporter: sbcbus
> Priority: Major
>
> 2 issues, but both related in the end. It made it a bit difficult to
> troubleshoot due to the variance.
> +In 1.5.5:+
> It seems "user-attributes:" does not work when specified in ldap-servers.yml.
> We recently had a change where we added an additional LDAP source so moved
> the entire config to there. Our connections that rely on custom attributes
> for the connection host name stopped working. *Uncommenting
> ldap-user-attributes: ... in guacamole.properties is a workaround.*
>
> +1.6.0:+
> The attributes do not seem to work *at all* in latest staging/1.6.0 branch.
> ldap-user-attributes: customAttributeName nor specifying it in ldap-users.yml
> as user-attributes: customAttributeName. Guacd logs shows the error as
> incorrect host name/dns error seemingly confirming it not being read.
> Reverting docker back to 1.5.5 results in case above.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)