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
You're absolutely right @wouterj, but in all honesty if we look at the total number of web applications that require authentication, this password less approach will be less than 1%. For all 99% remaining web applications, given that PHP is responsible for about 70% of them, a common standard would help a lot, don't you agree?
I'm not saying I am against the password less approach, but until there's more than a 50% adoption of this I will work on the traditional approach with traditional credentials, but feel free to add the scenario in. I wasn't fortunate to be working on such systems, so I have no idea how the workflow would look like.