Face Id and Touch Id.
If you are building web applications, use the WebAuthn W3C standard, which lets the browser access the operating systems biometric implementations. We’ll cover this standard in more detail below.
This category of biometrics utilizes user behavior as a factor. An example of this is gait recognition technology, which is primarily used for identification rather than authentication.
Another example is keystroke pattern recognition; that is, how a user types, the rhythm of keystrokes, the errors made, and the timing between key strikes. Done properly, this can identify a user without any action on their part, and could be a complement to some of the more intrusive factors.
However, there’s wide individual variation, even within a single day, of keystroke patterns, which can be problematic. A study from 2013 “suggested that keystroke dynamics biometrics are unlikely to replace existing knowledge-based authentication entirely and it is also not robust enough to be a sole biometric authenticator.”
This is a relatively uncommon factor of authentication.
To implement this, you need to know where the user was, either through GPS or specific user interfaces only available in certain locations. The system would then have a list of allowed locations and if the user was not in one, the authentication would fail.
This approach has some issues. GPS is not foolproof and can be spoofed; in 2012 a drone was nearly crashed by “sending false positional data” to it. Requiring your users to authenticate from a known set of locations limits the usefulness of many applications.
The WebAuthn W3C standard is evolving. As of early 2021 it had not yet become a Proposed Recommendation. However, it is supported by many major browsers.
Using this standard allows developers to easily incorporate physical biometric authentication or other high security factors. The browser is integrated with the operating system, which is in turn compatible with required hardware for factors such as fingerprint identification or facial recognition.
If the application in question is accessed through a browser, all that’s left for a developer to do is integrate with the browser API calls. Oh, and test. Make sure you spend some time testing a variety of different scenarios.
The WebAuthn standard works not only with biometric identification, but with other factors as well, including physical devices. You may hear the term FIDO mentioned when WebAuthn is discussed. FIDO2 is a set of specifications, of which WebAuthn is one.
MFA provides additional security by ensuring that a person accessing a system is authenticated correctly. However, there may be times when you want to explicitly disable MFA, if only for a certain period.
You can disable MFA when a request is made from a given device, for a period of time, or for a certain user account. As a developer, allowing this in certain circumstances makes the user experience better.
This form of MFA relaxation is often paired with a “trust this device” or “this is not a public computer” checkbox. In this case, the authentication system records that this device can be trusted. The trust can last forever or for a certain duration, after which MFA is again required. This has benefits for the user experience, and as long as the device remains secure and in possession of the user, the trust is warranted.
With a browser you can implement this by setting a cookie. An expiring, missing or removed cookie causes MFA to be required at the next login. Other devices have similar local storage mechanisms where preferences can be saved.
At times, you might want to relax all MFA requirements for a user’s account. This is a high risk operation. Removing MFA opens a user’s account up to being hijacked by someone possessing only one factor of authentication, the very issue MFA was meant to ameliorate.
However, you might want to allow this because the user has lost or forgotten one of the required factors. If needed, you’ll typically provide a way to do sidestep authentication before logging in.
Make sure you provide controls around this action so it isn’t abused.
Such controls often require a human to be in the loop. A manual process performed by a customer service rep trained to authenticate a user may work. Perhaps the rep can access private data that only the company and the user would know, such as the amount of the last bill. With this information, a rep can verify that a user is who they say they are, and then could disable MFA. This approach is vulnerable to social engineering, however.
Another option is to create self service one time codes. The system provides a set of one time use codes at the moment MFA is turned on. The user saves these and keeps them secret. When a user needs to turn off MFA, the system accepts a code to do so.
Note that in both of these cases, the user is still providing additional factors of authentication, but these are specialised ones, which circumvent the typical automated MFA process.
It’s all well and good to have a survey of the why, when and how of MFA, but what should you and your fellow team mates actually do about MFA?
Here are four steps you can take:
First, model out your system and determine who should use MFA and when. This depends on the type of data you store, what your application or applications can do, and what your regulatory or compliance regime specifies. Don’t consider MFA only at initial authentication; think about where both step up auth and MFA relaxation both may make sense. You can also offer more than two factors and allow users to pick the factors which are most convenient for them.
Don’t forget to talk to your end users, or at least a subset of them. The factors which make sense for an online banking application will be different from a corporate intranet app or a consumer application. Plan for the inevitable tradeoff between user experience, solution accessibility and security. Have those conversations as early in the application requirements process as you can.
If shared secrets need to be captured at authentication or registration, build or buy solutions which allow you to do so. These could be questions and answers, a seed for a TOTP solution, or even registering a physical device.
Plan for a minimum level of MFA, but allow users who want more to go beyond that. Many security conscious users will want to enable MFA for their accounts; allow them to do so. By building this in, you allow users to self select the level of security which makes sense for them. For example, one person may run their entire life through their Gmail account, while another may use it only occasionally as a throwaway email account. In the former case, MFA makes sense; in the latter it does not.
Your MFA policies and configuration should be flexible. You can store MFA requirements in a central location in your application, such as your identity provider, a specialized datastore, or in a configuration file. Be aware that these requirements will evolve as technology and your applications do. New features will be built and some of them may require step up. Different kinds of users may start using the system. This policy configuration should itself be protected and only allow privileged users access.