Replies: 2 comments 2 replies
|
Thanks for the detailed report and logs — they pinpoint the cause. This is not specific to LDAP or passkey authentication. It is a consequence of earlier authentication hardening: WebSSH now tracks browser authentication sessions server-side with an absolute expiry and revalidates every authenticated Socket.IO action. A normal sign-in received a secure 30-minute default. Once that record expired, the next keep-alive event was correctly rejected, so the browser disconnected even though the underlying SSH session was still active. The fail-closed enforcement is intentional, but a fixed default without a visible explanation or user-level control was not good behavior. PR #203 addresses that:
The security boundary is not being removed. There is no unlimited or sliding-expiration option, the normal-session maximum is eight hours, and server-side authentication records, account-generation checks, ownership checks, and immediate revocation on logout, account lock, or account deletion remain enforced. This keeps the tightened authentication model while making the duration explicit and user-controlled. Hope that behaviour meets a good mix between security and usability :) |
|
Hi, Would it be possible to offer the ability to the user to extend their session by inputting their credentials/passkey in a popup window for example 10 to 15 minutes before expiry ? I think it could also be interesting to add a variable in the compose file or in the admin panel to allow the admin to set the default timeout for the entire WebSSH deployment |

Thanks for the detailed report and logs — they pinpoint the cause.
This is not specific to LDAP or passkey authentication. It is a consequence of earlier authentication hardening: WebSSH now tracks browser authentication sessions server-side with an absolute expiry and revalidates every authenticated Socket.IO action. A normal sign-in received a secure 30-minute default. Once that record expired, the next keep-alive event was correctly rejected, so the browser disconnected even though the underlying SSH session was still active.
The fail-closed enforcement is intentional, but a fixed default without a visible explanation or user-level control was not good behavior. PR #203 addresses that: