[Webkit-unassigned] [Bug 261301] New: WebAuthn auth always shows hybrid QR code when only "internal" transport in allowCredentials but no credentials recognized by platform

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Sep 7 16:49:04 PDT 2023


https://bugs.webkit.org/show_bug.cgi?id=261301

            Bug ID: 261301
           Summary: WebAuthn auth always shows hybrid QR code when only
                    "internal" transport in allowCredentials but no
                    credentials recognized by platform
           Product: WebKit
           Version: Safari 16
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebKit Misc.
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: matthew at millerti.me

## Context

Safari 16 on iOS and macOS (and probably iPadOS too) always shows the hybrid auth QR code in cases where no entries in allowCredentials, with only ["internal"] specified for their transports, are recognized by the local platform authenticator.

As an RP, if we do not communicate to the browser that "hybrid" transport is possible for any provided credentials we would not expect the QR code to appear. For sake of comparison, Chrome on macOS and Android shows a "no passkeys available" message in this same scenario.

## Environment

- Safari 16.6
- macOS 13.5.1
- iOS 16.6

## Reproduction

This basic HTML document can be used to recreate the scenario outlined above:

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    body {
      max-width: 40em;
      margin: auto;
    }
  </style>
  <title>Safari Bug - Hybrid shown for unrecognized ["internal"] entry in allowCredentials</title>
</head>
<body>
  <h1>
    Safari Bug - Hybrid shown for unrecognized ["internal"] entry in allowCredentials
  </h1>
  <p>
    Demonstrating how Safari shows hybrid auth QR code as an option even though the only entry in
    allowCredentials has just ["internal"] for its transports.
  </p>
  <button id="auth1">Authenticate w/["internal"]</button>
  <script>
    // button#auth1
    document.getElementById('auth1').addEventListener('click', () => {
      navigator.credentials.get({
        publicKey: {
          challenge: new Uint8Array([1,2,3,4]),
          allowCredentials: [
            { id: new Uint8Array([1]), type: 'public-key', transports: ['internal'] },
          ]
        },
      }).then(console.log);
    });
  </script>
</body>
</html>
```

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20230907/d6d205e3/attachment.htm>


More information about the webkit-unassigned mailing list