LFI · Consent Journey · Authentication · Implementation

Implementation Guide 5 min read

This page provides best-practice guidance for LFIs implementing authentication in the Open Finance consent journey. The recommendations here reflect the approach most likely to satisfy SCA requirements, pass CX certification, and deliver an experience consistent with best-in-class mobile banking.

02 Payment consent flow

Step-up confirmation at point of authorization

For payment consents, the flow extends with a biometric confirmation at the point of authorization:

text
┌─────────────────────────────────────────────────────┐
│                                                      │
│  1. App opens → device binding verified (possession) │
│  2. Native biometric prompt (inherence)              │
│  3. SCA complete ✓                                   │
│                                                      │
│  ─── end user reviews payment details ───                 │
│                                                      │
│  4. End user taps "Confirm Payment"                       │
│  5. Native biometric prompt (step-up confirmation)   │
│  6. Authorization complete → doConfirm               │
│                                                      │
└──────────────────────────────────────────────────────┘

The step-up biometric at step 5 confirms the end user's intent to authorize the specific payment. This maps directly to how banking apps handle payment confirmation and satisfies the CBUAE directive's step-up requirement for sensitive actions.

03 Fallback scenarios

When the app is not available

The Overview defines the scenarios where the end user does not have the LFI app installed. This section provides implementation detail for those flows.

Mobile browser — browser-based authentication

If the LFI already supports browser-based authentication in its digital channels, the same capability MUST be available for Open Finance. The SCA requirements apply — the browser flow must achieve two-factor authentication:

FactorBrowser-based approach
PossessionVerified through a registered credential (e.g. a FIDO2/Passkey credential bound to the device, or a device fingerprint established during prior enrolment)
Inherence or KnowledgeBiometric authentication via WebAuthn/FIDO2 (if supported), or PIN/password entry

Mobile browser — app handoff via push notification

When the LFI does not support browser-based authentication, the LFI MUST hand off to the mobile app:

text
Mobile browser                         LFI app (bound device)
┌────────────────────┐                ┌─────────────────────┐
│                     │                │                      │
│ 1. GET /auth called │                │                      │
│    (interactionId + │                │                      │
│     consentId       │                │                      │
│     obtained)       │                │                      │
│                     │                │                      │
│ 2. End user enters       │                │                      │
│    username/password │                │                      │
│    (knowledge ✓)    │                │                      │
│                     │   push notif   │                      │
│ 3. LFI sends push ──┼───────────────►│ 4. End user opens notif   │
│                     │                │                      │
│                     │                │ 5. App authenticates  │
│ 6. Browser polls    │                │    (biometric ✓)     │
│    for completion   │                │                      │
│                     │                │ 7. App calls          │
│                     │                │    GET /consents,     │
│                     │                │    authorization,     │
│ 8. Redirect to TPP ◄─┼────────────── │    doConfirm/doFail  │
│                     │                │                      │
└─────────────────────┘                └─────────────────────┘

Key implementation details:

  • GET/auth MUST be called in the browser session — it cannot be called again from the app
  • The interactionId and consentId MUST be passed to the app via the push notification deep link
  • The app uses these identifiers to call GET/consents/{consentId}, present the authorization screen, and call doConfirm or doFail
  • The browser page MUST poll for completion and redirect back to the TPP

Desktop browser — QR code or push notification

On desktop, the LFI presents a web page with two handoff options:

QR code: The page displays a QR code that resolves to a deep link containing the interactionId and consentId (obtained from GET/auth in the desktop browser session). The end user scans the code with their mobile device, which opens the LFI app. The end user authenticates and completes consent authorization in the app. The desktop page polls for completion and redirects back to the TPP.

Push notification: Identical to the mobile browser handoff above — the desktop page collects username/password, triggers a push to the bound device, and polls for completion.

If the LFI supports browser-based authentication in its existing channels, the end user MUST also be able to complete the entire journey in the desktop browser without the mobile app.

04 Emerging best practices

Standards LFIs SHOULD evaluate

The following standards and technologies are consistent with the SCA principles and controls described in this guide. LFIs SHOULD evaluate them for future implementation:

FIDO2

FIDO2 is a suite of protocols that provides strong proofs-of-authentication using public-key cryptography. Unlike app-bound biometrics, FIDO2 produces a portable Authentication Assertion — a signed object that can be verified by any relying party holding the corresponding public key. FIDO2 satisfies SCA through possession (private key on device) and inherence (biometric gate to the key).

Passkeys

Passkeys are a cross-platform implementation of FIDO2 credentials developed by the FIDO Alliance with Apple and Google. They add the ability to synchronise keys between devices and recover from device loss — a key limitation of device-bound FIDO2 credentials. Passkeys provide the same SCA properties as FIDO2 with improved usability.

Secure Payment Confirmation (SPC)

SPC is a W3C standard that extends WebAuthn specifically for payment authentication. It presents a browser-native payment confirmation dialog that includes the payee and amount, with biometric verification. SPC supports the CBUAE dynamic-linking requirement (binding the authentication to a specific payment) and is already incorporated into 3D Secure flows.

OpenID for Verifiable Credentials

OpenID for Verifiable Credentials (OID4VC) provides a framework for presenting verifiable identity credentials as part of an authentication flow. This could enable third-party identity providers to participate in SCA, broadening the ecosystem beyond bank-issued credentials.

05 Security controls

Required controls for authentication implementations

LFIs MUST apply the following controls to their authentication implementation:

#ControlRationale
1Apps MUST be distributed through authorised app stores onlyProvides a trusted source and enables integrity verification
2Apps MUST verify the mobile OS version is supportedEnsures expected behaviour and reduces risk of information leakage
3App installations MUST be correlated to a specific device signatureEstablishes provenance of authentication operations
4Private keys MUST be stored in the device secure elementPrevents extraction and reflects OWASP mobile best practices
5Apps MUST verify the identity of external services (e.g. API Hub endpoints) using certificate pinning or equivalentPrevents redirection of authentication flows to malicious services
6Apps MUST NOT operate on jailbroken or rooted devicesPrevents compromise of the secure element and authentication flow
7Each authentication operation MUST be linked to the specific consent being authorizedProvides audit trail and prevents replay of authentication assertions