Passkey not working on Firefox Android #337

Closed
opened 2026-03-17 03:33:48 -05:00 by skraepgh · 11 comments
skraepgh commented 2026-03-17 03:33:48 -05:00 (Migrated from github.com)

Describe the bug:

When attempting to log in to VoidAuth on Firefox on Android, passkeys seem to fail. This used to work fine before. I visit the web page and press the "Passkey" button, nothing happens. If I press the button again, an error message says "Could not login with passkey." The same routine on Firefox on desktop Linux works as expected.

If I instead login with username and password, I am asked to register a passkey. Pressing "Register" opens up Bitwarden and I can register it there and it is saved, but I am then returned to VoidAuth page with a never ending loading screen. The newly created passkey does not work on desktop Linux, I then get the same error "Could not login with passkey." When logging in with username and password from desktop, I can then see that the passkey I just created on the phone did not save on VoidAuth.

To Reproduce:

Visit page, try to use passkey with Firefox on Android

Expected behavior:

It should work on the phone as it does on the computer

Database Driver:

sqlite

### Describe the bug: When attempting to log in to VoidAuth on Firefox on Android, passkeys seem to fail. This used to work fine before. I visit the web page and press the "Passkey" button, nothing happens. If I press the button again, an error message says "Could not login with passkey." The same routine on Firefox on desktop Linux works as expected. If I instead login with username and password, I am asked to register a passkey. Pressing "Register" opens up Bitwarden and I can register it there and it is saved, but I am then returned to VoidAuth page with a never ending loading screen. The newly created passkey does not work on desktop Linux, I then get the same error "Could not login with passkey." When logging in with username and password from desktop, I can then see that the passkey I just created on the phone did not save on VoidAuth. ### To Reproduce: Visit page, try to use passkey with Firefox on Android ### Expected behavior: It should work on the phone as it does on the computer ### Database Driver: sqlite
notquitenothing commented 2026-03-18 07:44:18 -05:00 (Migrated from github.com)

I have made some changes to the beta/dev release that might help figure out the issue. If you wouldn't mind switching your image (temporarily) to voidauth:edge, setting the ENABLE_DEBUG=true environment variable, trying again, and seeing if there is anything helpful in the container logs that would be very helpful 😊

I have made some changes to the beta/dev release that might help figure out the issue. If you wouldn't mind switching your image (temporarily) to `voidauth:edge`, setting the `ENABLE_DEBUG=true` environment variable, trying again, and seeing if there is anything helpful in the container logs that would be very helpful 😊
skraepgh commented 2026-03-18 08:39:33 -05:00 (Migrated from github.com)
 __   __ ______   __   _____    ______   __  __   ______  __  __   
/\ \ / //\  __ \ /\ \ /\  __ \ /\  __ \ /\ \/\ \ /\__  _\/\ \_\ \  
\ \ \ / \ \ \/\ \\ \ \\ \ \/\ \\ \  __ \\ \ \_\ \\/_/\ \/\ \  __ \ 
 \ \_/   \ \_____\\ \_\\ \_____\\ \_\ \_\\ \_____\  \ \_\ \ \_\ \_\
  \//     \/_____/ \/_/ \/_____/ \/_/\/_/ \/_____/   \/_/  \/_/\/_/

        ## Single Sign-On for Your Self-Hosted Universe ##


Session Domain: '[REDACTED]'
Database schema updated.
Connected to sqlite database.
Attempting SMTP email connection.
Listening on port: 3000
SMTP email connection verified.
user found in session
user found in session
user found in session
user found in session
user found in session
user found in session
interaction required: {"prompt":"login","reasons":["login_prompt","no_session"],"client_id":"auth_internal_client","username":null,"proxyauth":false}
user found in interaction
user found in session
interaction required: {"prompt":"consent","reasons":["op_scopes_missing"],"client_id":"auth_internal_client","username":"oscar","proxyauth":false}
user found in session
user found in session
user found in session
user found in session
user found in session
user found in session
user found in session
user found in session
interaction required: {"prompt":"login","reasons":["login_prompt","no_session"],"client_id":"auth_internal_client","username":null,"proxyauth":false}

This is the output I got after the change. There isn't really a difference, and there is no output when trying to log in with the passkey. The three "interaction required" lines are from logging in with password, and logging out again.

``` __ __ ______ __ _____ ______ __ __ ______ __ __ /\ \ / //\ __ \ /\ \ /\ __ \ /\ __ \ /\ \/\ \ /\__ _\/\ \_\ \ \ \ \ / \ \ \/\ \\ \ \\ \ \/\ \\ \ __ \\ \ \_\ \\/_/\ \/\ \ __ \ \ \_/ \ \_____\\ \_\\ \_____\\ \_\ \_\\ \_____\ \ \_\ \ \_\ \_\ \// \/_____/ \/_/ \/_____/ \/_/\/_/ \/_____/ \/_/ \/_/\/_/ ## Single Sign-On for Your Self-Hosted Universe ## Session Domain: '[REDACTED]' Database schema updated. Connected to sqlite database. Attempting SMTP email connection. Listening on port: 3000 SMTP email connection verified. user found in session user found in session user found in session user found in session user found in session user found in session interaction required: {"prompt":"login","reasons":["login_prompt","no_session"],"client_id":"auth_internal_client","username":null,"proxyauth":false} user found in interaction user found in session interaction required: {"prompt":"consent","reasons":["op_scopes_missing"],"client_id":"auth_internal_client","username":"oscar","proxyauth":false} user found in session user found in session user found in session user found in session user found in session user found in session user found in session user found in session interaction required: {"prompt":"login","reasons":["login_prompt","no_session"],"client_id":"auth_internal_client","username":null,"proxyauth":false} ``` This is the output I got after the change. There isn't really a difference, and there is no output when trying to log in with the passkey. The three "interaction required" lines are from logging in with password, and logging out again.
notquitenothing commented 2026-03-18 19:43:12 -05:00 (Migrated from github.com)

Well darn, I was hoping there would be an error of some kind in the logs. As it is, I cannot replicate the issue (I do not have an android device) so might be stuck on this. If anyone else can replicate this issue or has any ideas please comment and add to this issue

Well darn, I was hoping there would be an error of some kind in the logs. As it is, I cannot replicate the issue (I do not have an android device) so might be stuck on this. If anyone else can replicate this issue or has any ideas please comment and add to this issue
skraepgh commented 2026-03-19 04:59:38 -05:00 (Migrated from github.com)

That is unfortunate. I tried to clear all appdata for Firefox, so it was reset to factory default. Tried without all my custom dns servers and blocklist shenanigans, just straight clean Firefox with internet direct from ISP. I guess there could be a bug in Firefox itself, or somewhere else in Android. Bitwarden, where I keep my passkeys, never even opens. So it could be there is no bug at all in Voidauth, I don't know... Thank you for taking the time to investigate! I will report back if anything changes!

That is unfortunate. I tried to clear all appdata for Firefox, so it was reset to factory default. Tried without all my custom dns servers and blocklist shenanigans, just straight clean Firefox with internet direct from ISP. I guess there could be a bug in Firefox itself, or somewhere else in Android. Bitwarden, where I keep my passkeys, never even opens. So it could be there is no bug at all in Voidauth, I don't know... Thank you for taking the time to investigate! I will report back if anything changes!
Nerdtality commented 2026-03-23 02:05:59 -05:00 (Migrated from github.com)

Can confirm issue on my Pixel 10 and Firefox and Bitwarden

Can confirm issue on my Pixel 10 and Firefox and Bitwarden
Nerdtality commented 2026-03-23 21:26:36 -05:00 (Migrated from github.com)
See issue: bitwarden/android#6694
Nerdtality commented 2026-03-23 21:27:10 -05:00 (Migrated from github.com)

Has anyone tested this with anything else than Bitwarden?

Has anyone tested this with anything else than Bitwarden?
Nerdtality commented 2026-03-26 13:20:11 -05:00 (Migrated from github.com)

@notquitenothing @skraepgh

Firefox for Android version 149 includes a bugfix specifically related to passkeys. You can find more details about this fix on the Mozilla bug tracking system: https://bugzilla.mozilla.org/show_bug.cgi?id=2022389

Please update to version 149 or higher

Image
@notquitenothing @skraepgh Firefox for Android version 149 includes a bugfix specifically related to passkeys. You can find more details about this fix on the Mozilla bug tracking system: https://bugzilla.mozilla.org/show_bug.cgi?id=2022389 Please update to version 149 or higher <img width="1079" height="1175" alt="Image" src="https://github.com/user-attachments/assets/90535f28-c49b-45d6-98c3-6307ea7bb69b" />
skraepgh commented 2026-03-26 15:30:34 -05:00 (Migrated from github.com)

Yup, after updating to Firefox 149 it works again! Thanks!

Yup, after updating to Firefox 149 it works again! Thanks!
Nerdtality commented 2026-03-29 16:16:14 -05:00 (Migrated from github.com)

@notquitenothing close?

@notquitenothing close?
notquitenothing commented 2026-03-29 16:42:43 -05:00 (Migrated from github.com)

Yep, closing. If this issue pops up again feel free to open a new issue.

Yep, closing. If this issue pops up again feel free to open a new issue.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
adam/gate#337
No description provided.