[ https://issues.apache.org/jira/browse/GUACAMOLE-1691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17611774#comment-17611774 ]
Connor Norris commented on GUACAMOLE-1691: ------------------------------------------ As a side note, I tried to post this to the user list first - but even after subscribing im still bouncing. Is there something specific that needs to be done to subscribe I might be missing? > Reproduceable bug: TOTP incompatible with 'expire password' checkbox > -------------------------------------------------------------------- > > Key: GUACAMOLE-1691 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-1691 > Project: Guacamole > Issue Type: Bug > Environment: Current envrionment: > - Ubuntu 20.04.5 LTS Server > - Guacamole server 1.4.0 > - guacamole-auth-jdbc-1.4.0 > - mysql-connector-java-8.0.30 > - guacamole-server-1.4.0 > - 10.3.34-MariaDB-0ubuntu0.20.04.1 > ## (i've tried many more as well, see 'things i've tried' below) > Reporter: Connor Norris > Priority: Major > > Hello avocado enthusiasts, > I believe i've discovered a bug - i've spent the past 5 days inadvertently > finding every environment its reproduceable in while trying to avoid it. This > was not an issue around ~6 months ago when I last used guacamole, but it is > now... maybe > It would seem that TOTP is very specifically incompatible with the "expire > password" checkbox in the Guac GUI. > I have reached pretty much the full extent of my ability to debug this, and > have tried... a lot... of different fixes and installation methods. Some > pointers to a relevant log file with more verbosity would be incredibly > useful! I'll try to format both what i've tried, the relevant logs, and how > guac is currently installed below. > Behavior: > - On a clean install, the expire password checkbox functions normally. user1 > inputs password1, then they are prompted to change their expired password, > and they input password2. Password 2 becomes their new password > - After installing TOTP, then expiring a password, after the user changes > password1 to password2 and inputstheir valid 2FA code, the user is sent back > to the login screen with 'invalid login' at the top. > - If user1 enters password1, (or any random password) they get 'invalid > login' (expected) > - if user1 now enters password2, they get 'Verification failed. Please try > again.' ... this sorta implies that it KNOWS this is the correct newly > updated password, given the error message is only different when entering > that one password > - user1 can no longer login without admin account intervention. > Other pertinent details: > - TOTP functions as expected in all other use cases. Clear TOTP and Confirm > TOTP both function as expected. > - The password for user1 can still be set manually by admin accounts > - The self-serve 'change own password' bit still functions as expected > - Clearing the TOTP secret while expiring the password in tandem does not > solve the issue. > - granting the user anything from change password, to all permissions and > admin has no impact > - Only the specific combination 'totp' + 'expire-password' seem to be > incompatible > Current environment: > - Ubuntu 20.04.5 LTS Server > - Guacamole server 1.4.0 > - guacamole-auth-jdbc-1.4.0 > - mysql-connector-java-8.0.30 > - guacamole-server-1.4.0 > - 10.3.34-MariaDB-0ubuntu0.20.04.1 > ## (i've tried many more as well, see 'things i've tried' below) > ### /etc/guacamole/guacamole.properties > # MySQL properties > mysql-hostname: 127.0.0.1 > mysql-port: 3306 > mysql-database: guacamole_db > mysql-username: guacamole_user > mysql-password: censored > # TOTP properties > totp-issuer: guacamole > # (i've tried not changing the issuer as well) > ### catalina.out log > /var/lib/tomcat9/logs/catalina.out:727:[2022-09-30 20:10:01] [info] > 20:10:01.371 [http-nio-8080-exec-8] INFO o.a.g.r.auth.AuthenticationService > - User "user1" successfully authenticated from IPaddrX. > /var/lib/tomcat9/logs/catalina.out:728:[2022-09-30 20:10:01] [info] > 20:10:01.373 [http-nio-8080-exec-8] INFO o.a.g.auth.jdbc.user.UserService - > Expired password of user "user1" has been reset. > /var/lib/tomcat9/logs/catalina.out:729:[2022-09-30 20:10:20] [info] > 20:10:20.475 [http-nio-8080-exec-7] WARN o.a.g.r.auth.AuthenticationService > - Authentication attempt from IPaddrX for user "user1" failed. > ### from the guacamole_db > ## the most interesting/notable thing here, is that the 'change own password' > system permission seems to be missing from the user??? it is visibly set in > the gui. Not sure if that would be a row in system_permission or not. > [guacamole_db]> select * from guacamole_entity where name=user1\G > entity_id: 4 > name: user1 > type: USER > [guacamole_db]> select * from guacamole_system_permission WHERE entity_id=4\G > 1. row > entity_id: 4 > permission: CREATE_CONNECTION > 2. row > entity_id: 4 > permission: CREATE_CONNECTION_GROUP > 3. row > entity_id: 4 > permission: CREATE_SHARING_PROFILE > 4. row > entity_id: 4 > permission: CREATE_USER > 5. row > entity_id: 4 > permission: CREATE_USER_GROUP > 6. row > entity_id: 4 > permission: ADMINISTER > 6 rows in set (0.000 sec) > > [guacamole_db]> select * from guacamole_user_password_history\G > Empty set (0.000 sec) > ## ?????? password history definitely exists... entering an old password > generates and error the old and the new cannot be the same > [guacamole_db]> select * from guacamole_user_permission WHERE entity_id=4\G > 1. row > entity_id: 4 > affected_user_id: 4 > permission: READ > 2. row > entity_id: 4 > affected_user_id: 4 > permission: UPDATE > 2 rows in set (0.000 sec) > Things i've tried so far: > - full wipe, installing guacamole from source as per the apache site > instructions > - installing using docker instead > - ubuntu 22.04, ubuntu 20.04 > - using mySQL instead of MariaDB > - adding TOTP before first login > - adding TOTP after accounts are made > TLDR: > TOTP and 'expire password' seem to conflict. The most notable thing here is > that in the guacamole_system_permission table i was expecting to see a > 'change own password' value just like there is in the gui. > I've tried just about every different database and install method thats > supported, all with the same result. > Please let me know if there is any other data I should share, or if anyone > has any ideas. > Thanks! > Connor -- This message was sent by Atlassian Jira (v8.20.10#820010)