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:
- Use of an ACR value inappropriate for the user's device may cause the authentication to fail.
- If the user is using more than one application and they use different ACR values then the user may experience multiple authentication events.
- Providing one of these ACR values will skip the end user prompt to select an authenticator.
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