-
Notifications
You must be signed in to change notification settings - Fork 180
Add authentication documentation for Guacamole workspace service #4605
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
a8cbdb1
50805f3
c2b7bd3
20acb80
a8cec1e
a2067b7
54f77eb
c946318
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,148 @@ | ||||||
| <mxfile host="65bd71144e"> | ||||||
| <diagram id="guacamole-auth-flow" name="Guacamole Auth Architecture"> | ||||||
| <mxGraphModel dx="1208" dy="692" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" math="0" shadow="0"> | ||||||
| <root> | ||||||
| <mxCell id="0"/> | ||||||
| <mxCell id="1" parent="0"/> | ||||||
| <mxCell id="title" value="Apache Guacamole Workspace Service — Authentication Architecture" style="text;html=1;fontSize=20;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;" parent="1" vertex="1"> | ||||||
| <mxGeometry x="400" y="20" width="800" height="40" as="geometry"/> | ||||||
| </mxCell> | ||||||
| <mxCell id="user" value="<b>User Browser</b>" style="shape=mxgraph.azure.user;fillColor=#0078D4;fontColor=#ffffff;strokeColor=#005A9E;fontSize=12;whiteSpace=wrap;html=1;verticalLabelPosition=bottom;verticalAlign=top;imageWidth=40;imageHeight=40;" parent="1" vertex="1"> | ||||||
| <mxGeometry x="60" y="340" width="100" height="80" as="geometry"/> | ||||||
| </mxCell> | ||||||
| <mxCell id="container" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#666666;strokeWidth=2;dashed=1;dashPattern=5 5;arcSize=8;" parent="1" vertex="1"> | ||||||
| <mxGeometry x="300" y="120" width="620" height="560" as="geometry"/> | ||||||
| </mxCell> | ||||||
| <mxCell id="container_label" value="<b>Azure Linux Web App</b><br>(Docker Container)" style="text;html=1;fontSize=14;fontStyle=0;align=left;verticalAlign=top;whiteSpace=wrap;fillColor=none;strokeColor=none;fontColor=#333333;" parent="1" vertex="1"> | ||||||
| <mxGeometry x="310" y="125" width="250" height="40" as="geometry"/> | ||||||
| </mxCell> | ||||||
| <mxCell id="oauth2proxy" value="<b>OAuth2 Proxy</b><br>(v7.13.0)<br><br>Port 8085 (external)<br><hr><font style="font-size:10px">• OIDC provider<br>• Session cookies<br>• Token forwarding<br>• skip-provider-button</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1BA1E2;fontColor=#ffffff;strokeColor=#006EAF;fontSize=12;arcSize=10;" parent="1" vertex="1"> | ||||||
|
||||||
| <mxCell id="oauth2proxy" value="<b>OAuth2 Proxy</b><br>(v7.13.0)<br><br>Port 8085 (external)<br><hr><font style="font-size:10px">• OIDC provider<br>• Session cookies<br>• Token forwarding<br>• skip-provider-button</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1BA1E2;fontColor=#ffffff;strokeColor=#006EAF;fontSize=12;arcSize=10;" parent="1" vertex="1"> | |
| <mxCell id="oauth2proxy" value="<b>OAuth2 Proxy</b><br>(v7.7.1)<br><br>Port 8085 (external)<br><hr><font style="font-size:10px">• OIDC provider<br>• Session cookies<br>• Token forwarding<br>• skip-provider-button</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1BA1E2;fontColor=#ffffff;strokeColor=#006EAF;fontSize=12;arcSize=10;" parent="1" vertex="1"> |
Copilot
AI
Mar 10, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The architecture diagram documents the RDP connection to the Workspace VM with ignore-cert = true, which disables certificate validation for the Guacamole RDP connection. With ignore-cert enabled, an attacker with access to the workspace network could perform a man-in-the-middle attack by impersonating the VM’s RDP service and capture injected credentials or tamper with the remote session. Update the Guacamole connection configuration to enforce proper TLS certificate validation for RDP (i.e., do not use ignore-cert = true) and use valid, trusted certificates on the VMs instead of disabling checks.
| <mxCell id="vm" value="<b>Workspace VM</b><br>(User Resource)<br><hr><font style="font-size:10px">• RDP port 3389<br>• Inside workspace VNet<br>• ignore-cert = true</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#767676;fontColor=#ffffff;strokeColor=#4D4D4D;fontSize=12;arcSize=10;" parent="1" vertex="1"> | |
| <mxCell id="vm" value="<b>Workspace VM</b><br>(User Resource)<br><hr><font style="font-size:10px">• RDP port 3389<br>• Inside workspace VNet<br>• TLS cert validation enforced</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#767676;fontColor=#ffffff;strokeColor=#4D4D4D;fontSize=12;arcSize=10;" parent="1" vertex="1"> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| __version__ = "0.9.5" | ||
| __version__ = "0.9.6" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "Token Validation" bullet is currently a bit inaccurate: the custom Guacamole auth provider reads the JWT access token from the
X-Forwarded-Access-Tokenheader (and username fromX-Forwarded-Preferred-Username) which are set by oauth2-proxy when--pass-access-token/--pass-user-headersare enabled. Consider rewording this to avoid implying there is an "OAuth2 Proxy extension" inside Guacamole and to distinguish access token vs ID token.