Reputation: 5264
This is more of a philosophical question rather than a technical one but I think it's still relevant even if it boils down more to UX design than anything else.
It's 2021, hardly anyone has a Yubikey or similar but nearly everyone has a phone, tablet or desktop/laptop with a TPM and an OS or browser that supports FIDO2 & WebAuthn. Therefore I'd like to explore ways to make the built-in authenticator enrollment process as slick as possible and not require them to have conventional password auth in place (at least temporarily) to allow it to be done.
Is anyone aware of an approach out in the wild similar to the OpenID Connect device flow whereby someone could go to a public enrollment endpoint, do the enrollment ceremony for their device and then use a resulting unique code to link it to an account on another already enrolled device?
I'd see it working something like this:
This feels to me to be pretty secure as even if a code could be guessed the worst you could do would be to add someone else's credential to your account and since this is happening in an authenticated context we can implement rate limiting easily. The user would be free to manage their credentials after the fact however they see fit via a management UI.
Step 2 is probably the bit that's least clear for me but my thinking is that it doesn't really matter if the user provides garbage user details for the resident key as we'll be linking based on the credential ID in the backend anyway. If they put nonsense in then they're just impacting their own UX and nothing else and will be free to correct the mistake if they wish.
Thoughts?
Addendum: Having pondered it some more I think this approach (and the OIDC/OAuth2 device flows for that matter) open up a significant phishing vector and thus should probably be avoided.
Upvotes: 1
Views: 506
Reputation: 617
General flow is such:
There is certainly no need in codes.
BTW: FIDO Alliance has it's own UX/UI guide, called "How to FIDO" https://github.com/fido-alliance/how-to-fido and I would highly recommend to take a look at it.
Upvotes: 2