On Fri, Feb 9, 2024 at 6:46 AM [email protected] <[email protected]> wrote:
> Hello, > > I've installed Apache Guacamole v.1.5.4 on Linux CentOS 8.5 - I'm able to > login to GUI, create users, connection, etc. > I installed database (MySQL) as well (to manage users, connection) with > all needed *.jar files according to doc > https://guacamole.apache.org/doc/gug/jdbc-auth.html > > After that, I'm able to login as ""guacadmin" user to GUI and manage > connections etc. > > Now, I want to create URL to direct connection to my VM, but I found > errors like below: > > ------------------------------ SCRIPT > ------------------------------------- > #!/bin/bash > > TOKEN=$(curl -s -X POST -H "Content-Type: > application/x-www-form-urlencoded" -d > "username=guacadmin&password=guacadmin" > http://localhost:8080/guacamole/api/tokens | jq -r '.authToken') > > # Endpoint API Guacamole > API_ENDPOINT=" > http://localhost:8080/guacamole/api/session/data/mysql/connections" > > CONNECTION_DATA='{ > "name": "Connection name", > "protocol": "rdp", > "parameters": { > "hostname": "10.194.53.45", > "port": "3389", > "username": "user", > "password": "password" > } > }' > > RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" -H > "Authorization: Bearer $TOKEN" -d "$CONNECTION_DATA" $API_ENDPOINT) > > I don't think you're using the correct header, here for the Guacamole authentication token - you should be passing a header called "Guacamole-Token" with the Guacamole authorization token. Guacamole does not generally use the "Authorization" header. > CONNECTION_ID=$(echo $RESPONSE | jq -r '.identifier') > > if [ "$CONNECTION_ID" != "null" ]; then > URL=" > http://localhost:8080/guacamole/#/client/$CONNECTION_ID?token=$TOKEN" > echo "Connection ID: $CONNECTION_ID" > echo "URL: $URL" > else > echo "Error creating connection." > fi > > Two issues, here: * We've removed the ?token= parameter in recent versions in favor of a model that prefers/uses a header, instead, so you should leave off the token= part of this. * Your path for the connection (/client/$CONNECTION_ID) won't work - the client identifier is not the same as the connection ID, but is, instead, a base 64 encoding of the type of connection (connection or connection group), the data source (pgsql, mysql, etc.), and the connection identifier. See: https://github.com/apache/guacamole-client/blob/22fe53fde50fd139cb86091912e1ae50d348add8/guacamole/src/main/frontend/src/app/navigation/types/ClientIdentifier.js#L40-L71 -Nick >
