To tackle the common application pattern for authenticating, registering, resetting credentials, verifying, and unregistering from an application, the common patterns exists but many implementations make it hard to use the best solutions of different frameworks. While almost each application has this requirement, no standard has been defined.
- Too many backend solutions for storing and updating credentials (DB, LDAP/AD, API, SSO, SAML, …)
- Added complexity when authorisation is required
- Added complexity when MFA is required
- Frameworks provide their own tools for integration, but are not interchangeable
- a username: can take the form of a number, a string of characters, an email address
- a password or passphrase: random characters known only to the user (if generated randomly)
- an email address or phone number: for validation purposes
- Registers for an account with username, password, password validation, some personal details, and an email address or phone number for validation purposes
- Receives a confirmation email or text message with a verification code or link
- Enters the validation code or clicks the validation link
- Registration process is completed
- Signs in with known username and password/passphrase
- If successful, authentication is completed
- If unsuccessful, login screen is returned with an error message
- Authentication process is completed
- User provides username
- Message informs user that if account is known, an email or a text message will be sent with instructions to reset their account (for both valid and invalid accounts)
- The code has to be entered or the link in the mail has to be followed
- The user provides a new password/passphrase (with second credential field for validation)
- Reset process is completed
- User provides a username
- Message informs user that if account is known, an email or a text message will be sent with instructions to deactivate their account (for both valid and invalid accounts)
- The code has to be entered or the link in the email has to be followed
- The user has to explicitly confirm again to deactivate or remove the account
- Deactivation process is completed
Hi,
I have been working for almost 2 years on a Webauthn implementation in PHP and what I can say is that there is no real difficulty in switching from traditional credenrtials to this new authentication method. Also, I observe that lots of websites are preparing for the change. (step 1 below)
We all know that a username / password is not enough and apps have been adding MFA for a long time. For a smooth transition, the idea is very simple
Step 1:
Step 2:
Step 3: When users have enabled Webauthn and you haven't noticed any issues, get rid of passwords and other dangerous MFA methods (especially SMS). No need to wait for all users.
Bonus: when users register their authenticators using specific options, you can register them without a username, i.e. directly using the authenticator and some means of identity verification (e.g. biometric such as the fingerprint or facial recognition)
In case of loss of an authenticator, the user can use another one and delete the lost one. Otherwise, a "send me a link by email / push" to add a new login is always possible.
@wouterj: the Webauthn implementation I mentioned has a SF bundle that is using the old security method. I will implement the new one and I am wondering if you could take time reviewing it.