Skip to content

Add Cross Device Fallback URL extension for hybrid transport authentication#2380

Open
harshlal028 wants to merge 14 commits into
w3c:mainfrom
harshlal028:add-fallback-url-extension
Open

Add Cross Device Fallback URL extension for hybrid transport authentication#2380
harshlal028 wants to merge 14 commits into
w3c:mainfrom
harshlal028:add-fallback-url-extension

Conversation

@harshlal028

@harshlal028 harshlal028 commented Jan 26, 2026

Copy link
Copy Markdown

Closes #2341

The following tasks have been completed:

  • Modified Web platform tests (link)

Implementation commitment:

Documentation and checks

  • Affects privacy
  • Affects security
  • Updated explainer (link)

💥 Error: 422 Unprocessable Entity 💥

PR Preview failed to build. (Last tried on Jul 16, 2026, 3:55 AM UTC).

More

PR Preview relies on a number of web services to run. There seems to be an issue with the following one:

🚨 Spec Generator - Spec Generator is the web service used to build bikeshed/ReSpec specs

🔗 Related URL

Error output:

[
    {
        "lineNum": "2067:21",
        "messageType": "fatal",
        "text": "Tried to auto-close a <li>, but there were unclosed elements remaining before the nearest matching start tag (at 1923:5).\nOpen tags: <div> at 1705:1, <li> at 1923:5, <dl> at 1926:9"
    },
    {
        "lineNum": "813:1",
        "messageType": "link",
        "text": "Multiple possible 'ctap2 canonical cbor encoding form' dfn refs.\nArbitrarily chose https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html#ctap2-canonical-cbor-encoding-form\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:fido-client-to-authenticator-protocol-v2.1; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.2; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.3; type:dfn; text:ctap2 canonical cbor encoding form"
    },
    {
        "lineNum": "815:8",
        "messageType": "link",
        "text": "Multiple possible 'ctap2 canonical cbor encoding form' dfn refs.\nArbitrarily chose https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html#ctap2-canonical-cbor-encoding-form\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:fido-client-to-authenticator-protocol-v2.1; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.2; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.3; type:dfn; text:ctap2 canonical cbor encoding form"
    },
    {
        "lineNum": "830:5",
        "messageType": "link",
        "text": "Multiple possible 'ctap2 canonical cbor encoding form' dfn refs.\nArbitrarily chose https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html#ctap2-canonical-cbor-encoding-form\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:fido-client-to-authenticator-protocol-v2.1; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.2; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.3; type:dfn; text:ctap2 canonical cbor encoding form"
    },
    {
        "lineNum": "5666:72",
        "messageType": "link",
        "text": "Multiple possible 'ctap2 canonical cbor encoding form' dfn refs.\nArbitrarily chose https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html#ctap2-canonical-cbor-encoding-form\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:fido-client-to-authenticator-protocol-v2.1; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.2; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.3; type:dfn; text:ctap2 canonical cbor encoding form"
    },
    {
        "lineNum": "5706:61",
        "messageType": "link",
        "text": "Multiple possible 'ctap2 canonical cbor encoding form' dfn refs.\nArbitrarily chose https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html#ctap2-canonical-cbor-encoding-form\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:fido-client-to-authenticator-protocol-v2.1; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.2; type:dfn; text:ctap2 canonical cbor encoding form\nspec:fido-client-to-authenticator-protocol-v2.3; type:dfn; text:ctap2 canonical cbor encoding form"
    },
    {
        "lineNum": null,
        "messageType": "failure",
        "text": "Did not generate, due to errors exceeding the allowed error level."
    }
]

This seems to be an issue with the Spec Generator service. PR Preview doesn't manage this service and so has no control over it. If you've identified an issue with it, you can report the issue to the maintainers of Spec Generator directly. Please be courteous. Thank you!

If you don't have enough information above to solve the error by yourself or if the issue doesn't seem related to Spec Generator, you can file an issue with PR Preview.

Comment thread index.bs
Comment thread index.bs Outdated
Comment thread index.bs Outdated
@harshlal028
harshlal028 marked this pull request as draft January 26, 2026 19:51
@harshlal028
harshlal028 marked this pull request as ready for review March 26, 2026 17:53
@nadalin nadalin added this to the L4 WD02 Milestone milestone Apr 8, 2026
@nsatragno
nsatragno self-requested a review April 8, 2026 18:48
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated

@sbweeden sbweeden left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would like to see clarification on whether the fallbackURL can be server-relative or not.

Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
@harshlal028 harshlal028 changed the title Add fallbackUrl client extension for hybrid transport authentication Add Cross Device Fallback URL extension for hybrid transport authentication Apr 13, 2026
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated

: Authenticator extension processing
:: When [[##sctn-getAssertion|sending an assertion request over {{AuthenticatorTransport/hybrid}}]]:
1. The remote [=client platform=] strips out the [=crossDeviceFallbackUrl=], and then passes the request to enable credential managers.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not an authenticator step?

@harshlal028 harshlal028 May 19, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I grouped it under the current section as per (#2380 (comment)). As this is something that needs to be happen on authenticator device (by the hybrid implementation)- and there were only two options client and authenticator. Hence Is used the term remote client platform`. Lmk if you have a different suggestion and I can make the change.

Comment thread index.bs Outdated
Comment thread index.bs Outdated
beckysiegel pushed a commit to chromium/chromium that referenced this pull request May 26, 2026
This adds basic support for the  WebAuthn crossDeviceFallbackUrl
extension, which allows Relying Parties to provide a fallback URL for
cross-device (hybrid) authentication that the authenticator side will
open in a browser if no credential was found.

Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69fa1a08.2b0a0220.45bca.004a.GAE%40google.com

Current spec PR: w3c/webauthn#2380

Open issues:
- Does not yet implement the CrossDeviceFallbackException that the spec introduces, since the authenticator side of that is underspecified.
- Adds an client extension output, which the spec PR does not yet have, but WebAuthn requires of all client extensions.
- Desktop implementation only for now.


Bug: 509934168
TAG=agy
CONV=e7793212-8326-42ba-a793-70924fe5d4b8"

Link: https://chromium-review.googlesource.com/id/I314c75495071f9b707f08005782ad7ce6a6a6964
Bug: 09934168
Bug: 509934168
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7870585
Commit-Queue: Martin Kreichgauer <martinkr@google.com>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Rick Byers <rbyers@chromium.org>
Auto-Submit: Martin Kreichgauer <martinkr@google.com>
Cr-Commit-Position: refs/heads/main@{#1636519}
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request May 26, 2026
This adds basic support for the  WebAuthn crossDeviceFallbackUrl
extension, which allows Relying Parties to provide a fallback URL for
cross-device (hybrid) authentication that the authenticator side will
open in a browser if no credential was found.

Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69fa1a08.2b0a0220.45bca.004a.GAE%40google.com

Current spec PR: w3c/webauthn#2380

Open issues:
- Does not yet implement the CrossDeviceFallbackException that the spec introduces, since the authenticator side of that is underspecified.
- Adds an client extension output, which the spec PR does not yet have, but WebAuthn requires of all client extensions.
- Desktop implementation only for now.

Bug: 509934168
TAG=agy
CONV=e7793212-8326-42ba-a793-70924fe5d4b8"

Link: https://chromium-review.googlesource.com/id/I314c75495071f9b707f08005782ad7ce6a6a6964
Bug: 09934168
Bug: 509934168
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7870585
Commit-Queue: Martin Kreichgauer <martinkr@google.com>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Rick Byers <rbyers@chromium.org>
Auto-Submit: Martin Kreichgauer <martinkr@google.com>
Cr-Commit-Position: refs/heads/main@{#1636519}
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request May 27, 2026
This adds basic support for the  WebAuthn crossDeviceFallbackUrl
extension, which allows Relying Parties to provide a fallback URL for
cross-device (hybrid) authentication that the authenticator side will
open in a browser if no credential was found.

Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69fa1a08.2b0a0220.45bca.004a.GAE%40google.com

Current spec PR: w3c/webauthn#2380

Open issues:
- Does not yet implement the CrossDeviceFallbackException that the spec introduces, since the authenticator side of that is underspecified.
- Adds an client extension output, which the spec PR does not yet have, but WebAuthn requires of all client extensions.
- Desktop implementation only for now.

Bug: 509934168
TAG=agy
CONV=e7793212-8326-42ba-a793-70924fe5d4b8"

Link: https://chromium-review.googlesource.com/id/I314c75495071f9b707f08005782ad7ce6a6a6964
Bug: 09934168
Bug: 509934168
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7870585
Commit-Queue: Martin Kreichgauer <martinkr@google.com>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Rick Byers <rbyers@chromium.org>
Auto-Submit: Martin Kreichgauer <martinkr@google.com>
Cr-Commit-Position: refs/heads/main@{#1636519}
lando-worker Bot pushed a commit to mozilla-firefox/firefox that referenced this pull request May 29, 2026
…k URL extension, a=testonly

Automatic update from web-platform-tests
webauthn: Implement cross-device fallback URL extension

This adds basic support for the  WebAuthn crossDeviceFallbackUrl
extension, which allows Relying Parties to provide a fallback URL for
cross-device (hybrid) authentication that the authenticator side will
open in a browser if no credential was found.

Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69fa1a08.2b0a0220.45bca.004a.GAE%40google.com

Current spec PR: w3c/webauthn#2380

Open issues:
- Does not yet implement the CrossDeviceFallbackException that the spec introduces, since the authenticator side of that is underspecified.
- Adds an client extension output, which the spec PR does not yet have, but WebAuthn requires of all client extensions.
- Desktop implementation only for now.

Bug: 509934168
TAG=agy
CONV=e7793212-8326-42ba-a793-70924fe5d4b8"

Link: https://chromium-review.googlesource.com/id/I314c75495071f9b707f08005782ad7ce6a6a6964
Bug: 09934168
Bug: 509934168
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7870585
Commit-Queue: Martin Kreichgauer <martinkr@google.com>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Rick Byers <rbyers@chromium.org>
Auto-Submit: Martin Kreichgauer <martinkr@google.com>
Cr-Commit-Position: refs/heads/main@{#1636519}

--

wpt-commits: fbdf562c74a858fef939425c2719facc7e133eeb
wpt-pr: 60190
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
gecko-dev-updater pushed a commit to marco-c/gecko-dev-wordified-and-comments-removed that referenced this pull request Jun 1, 2026
…k URL extension, a=testonly

Automatic update from web-platform-tests
webauthn: Implement cross-device fallback URL extension

This adds basic support for the  WebAuthn crossDeviceFallbackUrl
extension, which allows Relying Parties to provide a fallback URL for
cross-device (hybrid) authentication that the authenticator side will
open in a browser if no credential was found.

Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69fa1a08.2b0a0220.45bca.004a.GAE%40google.com

Current spec PR: w3c/webauthn#2380

Open issues:
- Does not yet implement the CrossDeviceFallbackException that the spec introduces, since the authenticator side of that is underspecified.
- Adds an client extension output, which the spec PR does not yet have, but WebAuthn requires of all client extensions.
- Desktop implementation only for now.

Bug: 509934168
TAG=agy
CONV=e7793212-8326-42ba-a793-70924fe5d4b8"

Link: https://chromium-review.googlesource.com/id/I314c75495071f9b707f08005782ad7ce6a6a6964
Bug: 09934168
Bug: 509934168
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7870585
Commit-Queue: Martin Kreichgauer <martinkrgoogle.com>
Reviewed-by: Ken Buchanan <kenrbchromium.org>
Reviewed-by: Rick Byers <rbyerschromium.org>
Auto-Submit: Martin Kreichgauer <martinkrgoogle.com>
Cr-Commit-Position: refs/heads/main{#1636519}

--

wpt-commits: fbdf562c74a858fef939425c2719facc7e133eeb
wpt-pr: 60190

UltraBlame original commit: 84b5c448fb0208f8a31e59112ed305251d4e79dc
gecko-dev-updater pushed a commit to marco-c/gecko-dev-comments-removed that referenced this pull request Jun 1, 2026
…k URL extension, a=testonly

Automatic update from web-platform-tests
webauthn: Implement cross-device fallback URL extension

This adds basic support for the  WebAuthn crossDeviceFallbackUrl
extension, which allows Relying Parties to provide a fallback URL for
cross-device (hybrid) authentication that the authenticator side will
open in a browser if no credential was found.

Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69fa1a08.2b0a0220.45bca.004a.GAE%40google.com

Current spec PR: w3c/webauthn#2380

Open issues:
- Does not yet implement the CrossDeviceFallbackException that the spec introduces, since the authenticator side of that is underspecified.
- Adds an client extension output, which the spec PR does not yet have, but WebAuthn requires of all client extensions.
- Desktop implementation only for now.

Bug: 509934168
TAG=agy
CONV=e7793212-8326-42ba-a793-70924fe5d4b8"

Link: https://chromium-review.googlesource.com/id/I314c75495071f9b707f08005782ad7ce6a6a6964
Bug: 09934168
Bug: 509934168
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7870585
Commit-Queue: Martin Kreichgauer <martinkrgoogle.com>
Reviewed-by: Ken Buchanan <kenrbchromium.org>
Reviewed-by: Rick Byers <rbyerschromium.org>
Auto-Submit: Martin Kreichgauer <martinkrgoogle.com>
Cr-Commit-Position: refs/heads/main{#1636519}

--

wpt-commits: fbdf562c74a858fef939425c2719facc7e133eeb
wpt-pr: 60190

UltraBlame original commit: 84b5c448fb0208f8a31e59112ed305251d4e79dc
gecko-dev-updater pushed a commit to marco-c/gecko-dev-wordified that referenced this pull request Jun 1, 2026
…k URL extension, a=testonly

Automatic update from web-platform-tests
webauthn: Implement cross-device fallback URL extension

This adds basic support for the  WebAuthn crossDeviceFallbackUrl
extension, which allows Relying Parties to provide a fallback URL for
cross-device (hybrid) authentication that the authenticator side will
open in a browser if no credential was found.

Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69fa1a08.2b0a0220.45bca.004a.GAE%40google.com

Current spec PR: w3c/webauthn#2380

Open issues:
- Does not yet implement the CrossDeviceFallbackException that the spec introduces, since the authenticator side of that is underspecified.
- Adds an client extension output, which the spec PR does not yet have, but WebAuthn requires of all client extensions.
- Desktop implementation only for now.

Bug: 509934168
TAG=agy
CONV=e7793212-8326-42ba-a793-70924fe5d4b8"

Link: https://chromium-review.googlesource.com/id/I314c75495071f9b707f08005782ad7ce6a6a6964
Bug: 09934168
Bug: 509934168
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7870585
Commit-Queue: Martin Kreichgauer <martinkrgoogle.com>
Reviewed-by: Ken Buchanan <kenrbchromium.org>
Reviewed-by: Rick Byers <rbyerschromium.org>
Auto-Submit: Martin Kreichgauer <martinkrgoogle.com>
Cr-Commit-Position: refs/heads/main{#1636519}

--

wpt-commits: fbdf562c74a858fef939425c2719facc7e133eeb
wpt-pr: 60190

UltraBlame original commit: 84b5c448fb0208f8a31e59112ed305251d4e79dc
Comment thread index.bs Outdated
@nadalin
nadalin requested a review from emlun July 15, 2026 18:47
@timcappalli

Copy link
Copy Markdown
Member

@harshlal028 can you merge in main so that the PR preview starts working again?

@harshlal028

harshlal028 commented Jul 16, 2026

Copy link
Copy Markdown
Author

@harshlal028 can you merge in main so that the PR preview starts working again?

Hi @timcappalli,
Here is the main branch. Git log after latest git pull

commit 3cf2143 (HEAD -> main, origin/main, origin/HEAD)
Merge: b668301 ddde943
Author: David Waite david@alkaline-solutions.com
Date: Wed Jan 7 15:26:43 2026 -0700


Here is my branch add-fallback-url-extension which is already on top of main. Git log from my branch

commit 5c15306
Author: Harsh Lal 32895139+harshlal028@users.noreply.github.com
Date: Mon Jan 26 18:42:14 2026 +0000

Add fallbackUrl client extension for hybrid transport authentication

commit 3cf2143 (origin/main, origin/HEAD, main)
Merge: b668301 ddde943
Author: David Waite david@alkaline-solutions.com
Date: Wed Jan 7 15:26:43 2026 -0700

Is there something else you would like me to do.


PS: I did build the spec using following commands and I am able to see the generated HTML with changes

$ python3 -m venv .python-venv
$ source .python-venv/bin/activate
$ pip install bikeshed==5.4.2
$ bikeshed spec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add hybrid fallback URL extension

8 participants