Infinite loop when trying to log into Okta with a key that has a PIN
Categories
(Core :: DOM: Web Authentication, defect, P3)
Tracking
()
People
(Reporter: msirringhaus, Unassigned)
Details
I am not sure this is a bug on Firefox-side, but I'm filing this issue to have a paper trail. And maybe we'll need a workaround anyways.
What happens on Linux with Okta (I only have access to one instance, not sure if this happens on Okta in general):
- Register security key with a PIN (works fine)
- Log out and try logging back in
- Enter Username and PW
- Firefox prompts to connect a security key
- Plug it in, then Firefox prompts to enter the PIN
- Enter PIN, hit Ok
- Firefox prompts for the PIN again, and Okta says "operation aborted" in the background
- Repeat as long as you want
From my initial investigation, it seems to me that the operation gets aborted, before the finalized GetAssertion-command is sent back to the device.
The PIN is getting successfully used to establish the PinUvAuthToken, however the following GetAssertion-command returns with Error issuing command: CommandError: Unexpected code: KeepaliveCancel.
The abort seems to stem from another login-request that causes the ongoing request to cancel and restart the whole process.
Maybe the PIN-prompt, which sets the webpage 'inactive', causes the login-page to re-issue the sign-request, once it becomes active again, thus causing the ongoing request to stop.
| Reporter | ||
Comment 1•2 years ago
|
||
Forgot to mention: Logging in with a key (even the same key) without PIN-protection works fine.
Comment 2•2 years ago
|
||
Can you get a regression range with mozregression?
| Reporter | ||
Comment 3•2 years ago
|
||
This has been broken ever since auth-rs landed CTAP2.0/PIN support.
In older versions, it doesn't run into an infinite loop, though. It only aborts the operation after entering the PIN (same as the newer versions, but it doesn't restart the PIN-prompt).
Also, if the operation gets aborted, and I hit the "Retry"-button on the webpage, it all of a sudden works. On newer versions with the infinite loop, I have to click "Cancel" in the PIN-dialog and then hit the "Retry"-button, to make it work. Which makes me think it's mostly a problem on the JS-side of the webpage itself.
Question is, if we should handle this differently, as Chromium works fine.
Comment 4•2 years ago
|
||
I wasn't able to reproduce this on the Okta instance that I have access to.
Updated•2 years ago
|
| Reporter | ||
Comment 5•1 year ago
|
||
Bug 1908603 pinpointed the underlying problem. Closing in favor of that one.
Description
•