5 ms·
Few observations about Passkeys after implementing them for a client... First, what surprised me is that during the enrollment process, the client is not requi
by exabrial 15d ago
Few observations about Passkeys after implementing them for a client...
First, what surprised me is that during the enrollment process, the client is not required to sign a challenge and the server is not required to check it. There's some irony here. Adding this to the flow would be simple layered security, instead of complete reliance on the TLS channel. Something for the Internet Standards people to take into consideration.
Next, passkeys are annoying the way most major websites use them. You can in fact, make a great login experience using passkeys, but not that way capitalone.com Google does (Sorry to pick on you two guys, but it's pretty bad). I won't even mention statefarm.com because their entire website is in a constant state of being javascriptastically broken. Websites treat Passkeys as an accessory, when really it should be the other way around. Passwords, and... sigh, sms, need to be treated as unwelcome accessories.
To make a better user experience:
1: When enrolling a passkey, use the consumers name and permanent business key on your side. Something like `John Doe - PK501867` where PK501867 is an external customer identifier.
2: Lose passwords. Make this a secondary login method on your website, hidden.
3: Don't require SMS "2fA" if they use their passkey. You shouldn't be doing SMS anyway, so stop.
4: Don't use the "well known endpoints" for passkeys or anything related. It's an annoying and confusing consumer experience. Let the user initiate the login. Don't be clever.
5: Instead, just put a button called "Login with Passkey". When they click it, begin the auth flow in the browser. Use async RESTful calls with proper verbs (POST) and correct http signalling. If they authenticate, then redirect. If they don't, update the page but don't cause a navigation.
This by far, keeps the browser 100% functional and follows a natural user experience. It pushes users to use their passkey.