Skip to main content

Authenticator guidance for developers

Detailed developer guidance about the authenticators, ACR and AMR values that are supported by CIS2 Authentication.

Overview

CIS2 Authentication supports a range of authentication methods, including Windows Hello, Microsoft Authenticator, iPads, security keys and smartcards. All our authenticators are 'strong' in that they all use multi-factor authentication (MFA), not just a username and password. But some are stronger than others, and our authenticators come in two 'assurance' levels:

  • AAL2 - 'high confidence'
  • AAL3 - 'very high confidence'

When you integrate your software with CIS2 Authentication, you'll need to decide which assurance level is appropriate for your application, and make sure your users sign in with a suitable authenticator.

At a technical level, this is handled with 'ACR' and 'AMR' values.


Authenticators and assurance levels

For a full list of the authenticators we support, including assurance levels, see Care Identity Service authenticators.


Choosing an assurance level

As an application provider, you’ll need to decide which assurance level is suitable for your application. This should be based on:

  • the risk profile of your application, meaning what functions and data it provides access to
  • the assurance level required by any national APIs you need to access - for details, see the relevant API specifications in our API catalogue

CIS will then allow users to sign in with an appropriate authenticator, as follows:

AAL required by your application Authenticators available
AAL2 AAL2 and AAL3 authenticators
AAL3 AAL3 authenticators only

Recommendation

You should use AAL2 if possible. This will give your users more flexibility and make your application more attractive to your customers. AAL3 could provide more security than your application needs, while restricting your flexibility.

Step-up authentication

If your application requires AAL2 for some functions and AAL3 for other functions, it is possible to implement 'step-up' authentication as follows:

  • when the user first signs in, use AAL2
  • if a given user needs to access an AAL3 function, and they have signed in with an AAL2 authenticator, ask them to re-authenticate with an AAL3 authenticator (you can do this simply by omitting the prompt parameter)

ACR values

To ensure users sign in to you application with a suitable authenticator, you need to specify an Authentication Context Class Reference (ACR) value when you make an authentication request.

Specifically, include one of the following values in the acr_values request parameter:

ACR value Description
AAL3_ANY (default)

The user can select any of the AAL3 authenticators. Recommended if your application requires AAL3.

AAL2_OR_AAL3_ANY The user can select any of the AAL2 or AAL3 authenticators. Recommended if your application only requires AAL2.

The list of authenticators available to the user might be limited based on their client device.

Following a successful authentication request, the resulting ID token will contain:

  • an acr claim specifying which of the above ACR values was used to authenticate the user
  • an authentication_assurance_level claim which will be either 2 (if an AAL2 authenticator was used) or 3 (if an AAL3 authenticator was used)

You can, in theory, specify multiple ACR values, but we'll only look at the first one.

Additional ACR values

We offer support for the following additional ACR values, however these are subject to change at any time and should not be used. Requesting a specific authenticator limits the authenticator choice for a user and goes against our National Registration Authority policy in restricting access to national clinical systems.

Use of these ACR values is subject to the following caveats:

  1. Use of an ACR value inappropriate for the user's device may cause the authentication to fail.
  2. If the user is using more than one application and they use different ACR values then the user may experience multiple authentication events.
  3. Providing one of these ACR values will skip the end user prompt to select an authenticator.
Additional ACR values that can be requested
ACR value Description
AAL3_IOS Authenticate the user using the iOS CIS2 Application.
AAL3_FIDO2 Authenticate the user using FIDO2 via Windows Hello or security key.
AAL3_N3_SMARTCARD Authenticate the user using a smartcard via the legacy CIS1 Identity Agent.
AAL3_CIS2_SMARTCARD Authenticate the user using a smartcard via the new CIS2 Identity Agent (CIS2 Smartcard Connect).
AAL3_SMARTCARD Authenticate the user using a smartcard via either of the above smartcard options
AAL2_TOTP Authenticate the user using Microsoft Authenticator.
AAL2_NHSMAIL Authenticate the user using NHS.net Connect.
AAL2_PASSKEY Authenticate the user using an AAL2 passkey.

If you need to use a specific authentication mechanism, contact us first to discuss.


AMR values

When you make a token request, we return an Authentication Methods Reference (AMR) value in the amr claim within the ID token. This tells you which authenticator was used when the user signed in, as follows:

AMR value Description
IOS  The user was authenticated using the iOS CIS2 Application.
FIDO2 The user was authenticated using FIDO2 via Windows Hello or security key.
N3_SMARTCARD The user was authenticated using a smartcard via the legacy CIS1 Identity Agent.
CIS2_SMARTCARD The user was authenticated using a smartcard via the new CIS2 Identity Agent (CIS2 Smartcard Connect).
TOTP The user was authenticated using the MS Authenticator TOTP flow. 
THIRDPARTY_NHSMAIL The user was authenticated using the NHSmail flow.
AAL2_PASSKEY The user was authenticated using an AAL2 passkey.

Last edited: 17 March 2026 1:58 pm