Part of #155. Session 1. Split out of #156.
Problem
#156 made the API able to offer roaming authenticators, and added
?attachment=platform / ?attachment=cross-platform on
GET /webauthn/register/start. Nothing in the client can ask for it yet.
seamless-auth-react builds that query string from a PRF-shaped input
(buildRegisterStartPath in src/client/createSeamlessAuthClient.ts, which sets
only requestPrf and requirePrf), so the attachment parameter is not
reachable through the SDK. Registration also goes straight to
startRegistration({ optionsJSON }) with no branch point where a user could say
"I want to use a security key instead."
The default now offers both kinds in the browser picker, so this is not blocking
enrolment. What is missing is the deliberate path: an agency handing someone an
issued key wants that person taken straight to it, not left to find it in a
picker.
Why it matters
This is the client half of the hard cases in Appendix B of the migration
runbook: the issued key on a lanyard, and per-person roaming keys on a shared
front-desk workstation. Staff being walked through enrolment by a help desk need
an obvious path, not a browser dialog they have to interpret.
What to do
The work lands in seamless-auth-react, not in this repository.
- Widen the registration input so a caller can request an attachment, and thread
it into the register/start query
- Offer a visible "use a security key instead" path in the bundled enrolment UI
- Render the 400 the API returns for an unrecognised attachment
- Keep the default unset so the picker still offers both kinds
Acceptance
- A caller can drive a security-key enrolment through the SDK without hand
building the URL
- The default enrolment path is unchanged
- Covered by tests in the SDK repository
Freeze status
Exception 4. Blocked on nothing: the API side shipped in #156.
Part of #155. Session 1. Split out of #156.
Problem
#156 made the API able to offer roaming authenticators, and added
?attachment=platform/?attachment=cross-platformonGET /webauthn/register/start. Nothing in the client can ask for it yet.seamless-auth-reactbuilds that query string from a PRF-shaped input(
buildRegisterStartPathinsrc/client/createSeamlessAuthClient.ts, which setsonly
requestPrfandrequirePrf), so the attachment parameter is notreachable through the SDK. Registration also goes straight to
startRegistration({ optionsJSON })with no branch point where a user could say"I want to use a security key instead."
The default now offers both kinds in the browser picker, so this is not blocking
enrolment. What is missing is the deliberate path: an agency handing someone an
issued key wants that person taken straight to it, not left to find it in a
picker.
Why it matters
This is the client half of the hard cases in Appendix B of the migration
runbook: the issued key on a lanyard, and per-person roaming keys on a shared
front-desk workstation. Staff being walked through enrolment by a help desk need
an obvious path, not a browser dialog they have to interpret.
What to do
The work lands in
seamless-auth-react, not in this repository.it into the register/start query
Acceptance
building the URL
Freeze status
Exception 4. Blocked on nothing: the API side shipped in #156.