[ 
https://issues.apache.org/jira/browse/GUACAMOLE-2038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17930308#comment-17930308
 ] 

Nick Couchman commented on GUACAMOLE-2038:
------------------------------------------

Note that this not only allows for connecting to IPv6-based endpoints for 
OpenID, but also allows Tomcat to connect to guacd listening on an IPv6(-only) 
address.

As with GUACAMOLE-2037, I am changing this to an improvement.

> Allow Tomcat to be configured for IPv6 in Docker environment
> ------------------------------------------------------------
>
>                 Key: GUACAMOLE-2038
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-2038
>             Project: Guacamole
>          Issue Type: Improvement
>          Components: guacamole-docker
>            Reporter: Per von Zweigbergk
>            Priority: Minor
>
> If you are running guacamole (server) in an ipv6-only environment, with the 
> OIDC plugin for authentication, authentication will fail, causing a redirect 
> loop.
> The following message appears repeatedly in the guacamole application log 
> (truncated for privacy and brevity) while the client is stuck in a redirect 
> loop:
> {{guacamole_compose           | 09:45:03.595 [http-nio-8080-exec-8] INFO  
> o.a.g.a.o.t.TokenValidationService - Rejected invalid OpenID token: JWT 
> processing failed. Additional details: [[17] Unable to process JOSE object 
> (cause: org.jose4j.lang.UnresolvableKeyException: Unable to find a suitable 
> verification key for JWS w/ header 
> \{"typ":"JWT","alg":"RS256","kid":"<REDACTED>"} due to an unexpected 
> exception (java.net.ConnectException: Network is unreachable (connect 
> failed)) while obtaining or using keys from JWKS endpoint at 
> https://login.microsoftonline.com/...... <REST OF LINE REDACTED>}}
> The error above suggests a failure to connect to the backend server (in this 
> case login.microsoftonline.com).
> The root cause of this seems to be that Java doesn't have a great algorithm 
> for address selection, as documented in this OpenJDK bug, but it's not clear 
> where the correct place to fix this is. Reference: 
> [https://bugs.openjdk.org/browse/JDK-8170568]
> Briefly, what seems to happen is that a connection to 
> login.microsoftonline.com is attempted with IPv4 first, which fails (because 
> there's no IPv4 address configured in my container), and that makes the 
> connection give up completely instead of re-trying using IPv6.
> The workaround for this is to set the JAVA_OPTS environment variable in the 
> docker container to:
> -Djava.net.preferIPv6Addresses=true
> (I'm sure there are ways to set these options too if you're not running 
> docker.)
> I'm not sure, but I think this would affect any outgoing connections from the 
> guacamole server itself, not just outbound connections for OIDC.
> Not sure what the solution to this should be, but ideally I'd expect a 
> well-behaved application making HTTP requests to try connecting using IPv6 
> first (if available) and then fall back to IPv4, and not, which is what seems 
> to happen now, just try IPv4 and then fail if it doesn't work. Perhaps this 
> should be documented and a more "user friendly" method to enable this flag 
> should be set?
> (Also, and I'm not sure if this is a seperate bug, or if it's even a bug at 
> all, but causing a redirect loop because of a problem like this doesn't 
> really seem like a great failure more. It appears to stop after a while, but 
> only because the IdP stops redirecting after a while after repeated failures, 
> not because of anything Guacamole does.)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to