Implement Web Authentication FIDO2 support in GeckoView
Categories
(GeckoView :: General, enhancement, P1)
Tracking
(geckoview66 wontfix, firefox-esr60 wontfix, firefox66 wontfix, firefox67 wontfix, firefox67.0.1 wontfix, firefox68 wontfix, firefox69 wontfix, firefox70 wontfix, firefox83 fixed)
People
(Reporter: jcj, Assigned: snorp)
References
(Blocks 1 open bug, )
Details
(Whiteboard: [geckoview:m82])
Attachments
(2 files)
Implement Web Authentication via com.google.android.gms:play-services-fido. This is going to involving moving the code from https://phabricator.services.mozilla.com/D1148 (bug 1391438) to more permanent locations and adjusting to match the GV architecture.
Assignee | ||
Comment 1•6 years ago
|
||
I think the basic strategy here would be to add a method to GeckoSession.ContentDelegate
or perhaps a new delegate. Something like:
class WebAuthnCredential {
byte[] clientDataJson;
byte[] keyHandle;
byte[] attestationObject;
}
GeckoResult<WebAuthnCredential> onWebAuthnMakeCredential(String rpId, String rpName, String rpIcon,
ByteBuffer userId, String userName,
String userIcon, String userDisplayName,
final ByteBuffer challenge, long timeoutMs,
String origin, final Object[] idList,
final ByteBuffer transportList);
We would then let Android Components and/or Fenix handle all the nitty gritty of interacting with Play Services.
Comment 2•6 years ago
|
||
Adding [geckoview:fenix:p2] whiteboard tag because we'd like WebAuthn support in Fenix soon, but it's not a release blocker for Fenix MVP.
Updated•6 years ago
|
Comment 3•6 years ago
|
||
(In reply to Pulsebot from bug 1391438 comment #9)
https://hg.mozilla.org/integration/autoland/rev/d8e0bfeb5fa3
Support FIDO2 for WebAuthn on Android r=snorp,keeler
J.C., does the FIDO2 patch for bug 1391438 also fix this bug?
Reporter | ||
Comment 4•6 years ago
|
||
As far as I understand it, no. It's most of the way, though, but the landed modules from bug 1391438 need to move to different locations for g-v / a-c.
Comment 5•6 years ago
|
||
Bug 1555425 enabled WebAuthn for Fennec 68, but specifically excluded GeckoView. Once Google whitelists Fenix for WebAuthn, we should enable WebAuthn for GeckoView.
Reporter | ||
Comment 6•6 years ago
|
||
Whitelisting is expected "June/July". Will update when I hear it's done.
That said, I think the code refactoring could happen anytime in mozilla-central.
Updated•6 years ago
|
Updated•6 years ago
|
Comment 7•6 years ago
|
||
Deferring this bug from Fenix's M7 (July) milestone to the M8 backlog for later in Q3.
Comment 8•6 years ago
|
||
I'm editing a bunch of GeckoView bugs. If you'd like to filter all this bugmail, search and destroy emails containing this UUID:
e88a5094-0fc0-4b7c-b7c5-aef00a11dbc9
Comment 9•6 years ago
|
||
Fenix's WebAuthn issue: https://github.com/mozilla-mobile/fenix/issues/1340
Comment 10•6 years ago
|
||
Removing closed (invalid) issue.
Comment 11•6 years ago
|
||
Bumping from milestone M8 to M9 because the Fenix issue is in Fenix's Q4 backlog:
Updated•6 years ago
|
Reporter | ||
Comment 12•6 years ago
|
||
(In reply to J.C. Jones [:jcj] (he/him) from comment #6)
Whitelisting is expected "June/July". Will update when I hear it's done.
I didn't think to ping until now, but the Android team has confirmed this is done and ready-to-go.
Assignee | ||
Comment 13•6 years ago
|
||
(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) (he/him) from comment #1)
I think the basic strategy here would be to add a method to
GeckoSession.ContentDelegate
or perhaps a new delegate. Something like:class WebAuthnCredential { byte[] clientDataJson; byte[] keyHandle; byte[] attestationObject; } GeckoResult<WebAuthnCredential> onWebAuthnMakeCredential(String rpId, String rpName, String rpIcon, ByteBuffer userId, String userName, String userIcon, String userDisplayName, final ByteBuffer challenge, long timeoutMs, String origin, final Object[] idList, final ByteBuffer transportList);
The billion arguments should obviously be captured inside some kind of WebAuthnRequest
class :)
Updated•6 years ago
|
Comment 15•5 years ago
|
||
Shouldn't this rank higher in type and severity? AFAICT, right now, if a user has adopted WebAuthn in Fennec, they get locked out of their accounts when they get the Fenix upgrade, which is alread rolling out.
Comment 16•5 years ago
|
||
In particular this prevents anyone using Google's Advanced Protection setting to use FF on mobile.
Assignee | ||
Comment 17•5 years ago
|
||
Yeah, I think we need to get on this. I'm clearing priority so we'll retriage.
Updated•5 years ago
|
Assignee | ||
Comment 20•5 years ago
|
||
I'm working on this now, hopefully will have something up this week. It will be trivial for Android Components to consume this, as they'll just need to launch the FIDO intent and collect the result.
Assignee | ||
Comment 21•5 years ago
|
||
This allows GeckoView to ask the embedding application to launch
other Activities on our behalf and collect the result. We need
this to invoke the FIDO authentication tools for WebAuthn.
Assignee | ||
Comment 22•5 years ago
|
||
This mostly just refactors the stuff we had for Fennec.
We add a dependency on Google Play Services here, but care
is taken to ensure that things will fail gracefully if
Play Services are not present at runtime.
Comment 23•5 years ago
|
||
For uplift consideration: When Firefox has taken over the kinds of in-app browser views that Firefox can take over from Chrome, if the user tries to sign into Hey with a security key, the flow fails.
Comment 24•5 years ago
|
||
Comment 25•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/bb3cee345d37
https://hg.mozilla.org/mozilla-central/rev/b2c7cf464308
![]() |
||
Comment 26•5 years ago
|
||
Backed out 2 changesets (Bug 1549418) for causing android bpgo exceptions.
https://hg.mozilla.org/integration/autoland/rev/b114812f82755c9d0254d9b4d0b13478f0020822
Comment 27•5 years ago
|
||
Assignee | ||
Updated•5 years ago
|
![]() |
||
Comment 28•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/d3d44f363444
https://hg.mozilla.org/mozilla-central/rev/93743d0782aa
Updated•5 years ago
|
Description
•