| Summary: | [WebAuthn] Safari ignores maxMsgSize in Message encoding | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | login Llama <loginllama> |
| Component: | WebCore Misc. | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW --- | ||
| Severity: | Normal | CC: | garrett_davidson, jiewen_tan, matthew, nuno.sung, paulschreiber, webkit-bug-importer, will.smart |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari Technology Preview | ||
| Hardware: | iPhone / iPad | ||
| OS: | iOS 14 | ||
| Bug Depends on: | |||
| Bug Blocks: | 181943 | ||
|
Description
login Llama
2021-01-07 08:29:49 PST
This is an ongoing issue. With sites like Github allowing multiple credentials to be registered, The allow lists are starting to trip this issue. The user sees the no credentials error for the authenticator once the list gets too big, until they delete one on the server, and then it works again. 8 to 10 credentials triggers this depending on authenticator. Safari still overflows the buffer when the allow list is too large. The problem impacts Microsoft logins the worst, as they tend to have longer allow lists for various reasons. The main cause of the problem is that unlike all the other browsers Safari is not batching requests. Microsoft has two flows, one that uses discoverable credentials, and one where the user enters their userID then selects "Other ways to sign in" rather than entering the password. It is this flow that uses an allow list and breaks. I also encounter this issue on MSA or test with 9+ credential-id through https://webauthntest.identitystandards.io/ on ios 17.5.1 and 18.0 Beta 3. This is reproducible on google.com as well. Apple folks, see FB12203884 (filed May 2023). Not only with excludeList/allowList cases, some rp add all supported algo when doing make() also will trigger this issue, e.g.
---
{ "attestation": "direct", "authenticatorSelection": { "residentKey": "discouraged", "userVerification": "preferred" }, "challenge": "a0oPIQ4k5mF15rK1WKnUxqGsRYvsC-0tHf3er8i0LZHTv8f4KGUMRQ1ys- aJiFg0_OuIPhKA8ecaRuUmfHN3EQ", "excludeCredentials": [ {"id": "iNRyobHFV_khWBgdUXpkeNxVFjRh2MIZI7YSJt4qBDTsK1kwQ8H6DmqixmZM2jRIbhXpbSV_UN_9GK4PcuMYv4EMReqzRhIPAgggCK21ouy4fHE HUFHHAYdMTC6d8Q", "transports": [ "usb", "nfc", "ble", "hybrid", "internal" ], "type": "public-key" }, { "id": "vxwsDOgJ08syZrS13YAEXS7UV51B0rb8гBTm92NJvWaxMEQOUkc2L_Nvs Se6Cprd@VG5Wt-0WUcuDx5xdomaIA", "transports": [ "usb", "nfc", "ble", "hybrid", "internal" ], "type": "public-key" } ], "extensions": { "credProps": true }, "pubKeyCredParams": [ { "alg":-65535, "type": "public-key" }, { "alg":-257, "type": "public-key" }, { "alg": -258, "type": "public-key" }, { "alg": -259, "type": "public-key" }, { "alg": -37, "type": "public-key" }, { "alg": -38, "type": "public-key" }, { "alg":-39, "type": "public-key" }, { "alg": 7, "type": "public-key" }, { "alg":-35, "type": "public-key" }, { "alg": -36, "type": "public-key" }, { "alg": -8, "type": "public-key" }, { "alg": -43, "type": "public-key" } ], "rp": { "id": "binance.com", "name": "Binance" }, "user": { "displayName": "Chrome V126.0.0.0 (Windows)", "id": "NDg2MTA4NDIz", "name": "xxxxxx.user1@gmail.com" } }
---
|