Hi there,
I have a project create a mobile app that authenticates using biometric, and then call the REST API to validate using private - public key.
How to do this?
regards
You can split your solution into two layers and implement both fully in OutSystems 11:
Below is a concrete approach for each part.
In OutSystems 11 mobile, biometrics is done through a native plugin.
On Forge you’ll find plugins like:
Install the plugin module into your environment, then:
DoBiometricLogin()
This matches the recommended “plugins + client actions” architecture for mobile apps: plugins expose JavaScript/native APIs and are consumed via client actions in your app logic.Mobile Application Architecture -- Plugins, UI & Security
A common pattern:
First login:
IsBiometricEnabled
DeviceToken
Next logins:
IsBiometricEnabled = True
Do not store passwords locally; this is explicitly discouraged.Mobile Application Architecture -- Security > Data Storage and Encryption Best Practices
You mentioned “validate using private - public key” via REST. In practice there are two main patterns you can use with OutSystems:
This is the most common and aligns with OutSystems best practices.Enterprise Mobile Apps for Millions of Users > Service Security Implementation Using OAuth2
Conceptually:
Initial online login (username/password + possibly OTP):
Quick login (biometric):
POST /token/refresh
Authorization
Security aspects:
Where do the public/private keys come in?
In OAuth2-style flows, asymmetric keys are typically used server-side to sign and validate tokens (e.g., JWTs). The mobile app does not need to hold the private key:
This keeps private keys out of the device while still using asymmetric crypto.
If you really want a flow where the mobile device itself has a key pair:
Device key generation:
GET /auth/challenge
POST /auth/verify
From OutSystems perspective:
/auth/challenge
/auth/verify
Again, no password is stored on the device, and the private key never leaves the secure keystore.
Mobile app module
BiometricCheck()
IsAuthenticated
QuickLogin()
RefreshToken
GetChallenge
VerifyChallenge
Security / Token / Key logic
/login
/token/refresh
Respect security best practices
If you share whether your backend is also OutSystems or an external service, and whether you control its implementation, I can suggest a more concrete flow (endpoint examples, data structures, and where exactly in OutSystems to place each part).