Its really awesome that Guacamole can be called using REST API, this makes it
incredibly powerful and flexible. However there some pain points and
improvements possible
1. The connection and connection group response bodies are a rather big
JSON. They don’t use the array type and the keys contain the actual values of
the connection identifier. Any JSON parser will panic trying to decipher them.
Is there a reason why such JSON file is created for these two types whereas
others respect proper JSON formatting? See below for what a better reponse body
would look like.
2. I couldn’t find it but there seems to be no API endpoint for forcing a
logout for the user. I know you can kill any or all sessions for a user and
their connection permissions rendering them seeing an empty page. However if
the IdP also blocks them from getting a new token this can never happen in the
current situation as long as the user stays logged on. A logout API call would
solve this.
I would like to add this is not complaining about Guac. I truly love this
solution and all the people contributing to it its truly the silent MVP in the
tech world and you guys are doing amazing work. But when you truly love
something you also want it to become better.
Before;
{
"11": {
"name": "AD Jump Hosts - External Users",
"identifier": "11",
"parentIdentifier": "ROOT",
"type": "ORGANIZATIONAL",
"activeConnections": 0,
"attributes": {
"max-connections": null,
"max-connections-per-user": "10",
"enable-session-affinity": ""
}
},
"1": {
"name": "Emergency Access - AD Jump Hosts",
"identifier": "1",
"parentIdentifier": "ROOT",
"type": "ORGANIZATIONAL",
"activeConnections": 0,
"attributes": {
"max-connections": null,
"max-connections-per-user": null,
"enable-session-affinity": ""
}
}
}
After:
[
{
"name": "My connection Group A",
"identifier": "11",
"parentIdentifier": "ROOT",
"type": "ORGANIZATIONAL",
"activeConnections": 0,
"attributes": {
"max-connections": null,
"max-connections-per-user": "10",
"enable-session-affinity": ""
}
},
{
"name": "My connection Group B",
"identifier": "1",
"parentIdentifier": "ROOT",
"type": "ORGANIZATIONAL",
"activeConnections": 0,
"attributes": {
"max-connections": null,
"max-connections-per-user": null,
"enable-session-affinity": ""
}
}
]