Skip to content

Need to have authenticator-only extensions #2331

@joshzhao

Description

@joshzhao

In Section 9 of the specification (WebAuthn Extensions), it is stated that "Every extension is a client extension, meaning that the extension involves communication with and processing by the client." Such a definition is not conducive to experimentation through the extension mechanism, thus limiting innovations within the framework of WebAuthn. With every extension being a client extension, the client is free to discard any unknown extension, which most clients choose to do in reality. This makes it impossible to experiment with custom extensions between RPs and their accompanying authenticators before the custom extension is widely adopted by clients. Snice such experiments are needed to gauge the effectiveness of the new mechanism, having clients as the gatekeeper on what extensions can be used practically makes the extension mechanism useless in facilitating experimentations.

Instead, we should define a category of extensions that are authenticator-only. Clients should pass these extensions through to authenticators even if they do not recognize them.

This is not a security or privacy concern. For those authenticators that do not recognize the custom extension, they will ignore the extension and thus no effect whatsoever. For those authenticators that are prepared to process the custom extension, the client really should not get in the way to intercept such end-to-end interactions.

The argument that the client should reject unknown extension for fear of security and privacy concerns is unjustified. It's just like an internet service provider should not disrupt communication to end user's computers based on the fact that it does not recognize the communication type. Otherwise, it would be breaking the end-to-end principle of the Internet in the name of user protection.

Therefore, we need a category of authenticator-only extensions and avoid clients' arbitrary dropping of such extensions.

Proposed Change

Extensions are divided into client extensions and authenticator extension...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions