medium complexity high priority must have MVP extracted Authentication & Access Control Confidence: 100%
4
Components
58
Shared
0
User Stories
Yes
Analyzed

Description

This feature enables Face ID and fingerprint authentication for returning users after their initial BankID, Vipps, or email/password login. The biometric prompt replaces the need to re-enter credentials on every app launch, significantly reducing friction for daily users such as peer mentors who log activities multiple times per day. Credentials are stored in the device's secure enclave and never leave the device; biometric authentication simply unlocks the stored session token to resume the authenticated session.

User Flow

Biometric Authentication (Face ID / Fingerprint) user flow
Click to expand

Analysis

Business Value

Peer mentors register activities frequently throughout their workday, making fast and frictionless re-authentication essential to adoption. Requiring full BankID authentication every session would create unacceptable friction and drive users back to paper-based or Word-based workflows. Biometric authentication preserves security (credentials never leave the device's secure enclave) while dramatically lowering the interaction cost of each app session. This is especially important for the target demographic, which includes users with motor and cognitive impairments who benefit from reduced input requirements and touch-based authentication.

Implementation Notes

Implemented using the local_auth Flutter plugin, which wraps iOS LocalAuthentication (Face ID / Touch ID) and Android BiometricPrompt APIs. The Secure Credential Store uses Flutter Secure Storage to persist the refresh token, encrypted at rest using AES-256. On successful biometric verification, the stored refresh token is read and exchanged for a new access token via POST /api/v1/auth/refresh. The Biometric Auth Service handles capability detection (checks if biometrics are enrolled and available), fallback to PIN/password if biometrics fail, and graceful degradation on devices without biometric hardware. Users can disable biometric login from Settings.

Dependencies

email-password-loginbankid-vipps-authentication

Definition of Done

Face ID and fingerprint authentication work on supported iOS and Android devices
Biometric auth successfully retrieves and refreshes session token
Graceful fallback to email/password when biometrics unavailable or fail
Users can enable/disable biometric login from Settings
Biometric credentials never transmitted off-device — verified by security review

Components (62)

User Interface (1)

Service Layer (1)

Data Layer (1)

Infrastructure (1)

Shared Components

These components are reused across multiple features

Infrastructure (20)

User Stories

No user stories have been generated for this feature yet.