I am wondering, why when using Biometric plugins in Outsystems, there is no authentication using digital signature , challenge, private - public key?
regards
There isn’t (as of O11) an official OutSystems mobile plugin whose purpose is specifically “generate asymmetric key pair in the OS keystore and sign challenges.” That part is normally done either:
The Key Store Plugin is the official plugin that deals with secure storage of secrets in the OS‑level secure storage (Keychain / Keystore).Key Store Plugin
Key points:
KeyAuthentication
SetValue
So if your REST‑API design is based on storing device secrets/tokens that are protected by biometrics, the Key Store Plugin is the supported way to do it.Key Store Plugin
For a strict public/private key pair + challenge/signature flow, you’ll need a custom plugin that:
SecKeyCreateRandomKey
SecKeyCreateSignature
KeyPairGenerator
Signature
KeyGenParameterSpec
setUserAuthenticationRequired(true)
Then you:
GenerateKeyPair()
Sign(data)
OutSystems gives you the architecture and build tooling (MOBS) to integrate that plugin, but the actual key‑pair generation/signature logic is implemented in the native code of your plugin.Integrating Plugins with OutSystems
So, to answer directly:
OutSystems itself doesn’t remove that capability; it’s mostly a scope and responsibility choice of the standard biometric plugins and of OutSystems’ mobile architecture.
In practice, there are three different layers that often get mixed up:
The Forge “biometric” plugins you see typically implement only (1), and sometimes (2) is left entirely to OS native APIs or other custom plugins. Here’s why.
Most Forge biometric plugins (TouchID, Fingerprint, generic Biometric/FaceID, etc.) are thin wrappers over:
LAContext
Those APIs are primarily meant to answer: “Is the real device owner present and authenticated?”
So the plugin exposes actions like:
IsAvailable
Authenticate
They don’t define any opinionated, end‑to‑end authentication protocol for your app (token flow, key management, challenge‑response). That protocol is intentionally left up to you to implement at app + backend level.Mobile Application Architecture -- Plugins, UI & Security
There are a few reasons this is not bundled directly into the standard biometric plugins:
Different use cases, different cryptographic flows
Key management belongs in the OS secure keystore, not in OutSystems Generating, storing, and using keys is done via:
Security responsibility and flexibility OutSystems recommends you keep:
Mobile app architecture in OutSystems OutSystems 11 mobile follows a “plugins + client actions + REST” pattern:
Even though the standard biometric plugins don’t directly expose “SignChallengeWithPrivateKey”, you can still implement the full flow in OutSystems by combining pieces:
Option A – Recommended in most projects (OAuth2‑style)
Option B – Device key pair + challenge/response (what you’re asking about) You can design it like this:
First login (password, MFA…)
Subsequent “biometric login”
GET /auth/challenge
POST /auth/verify
In OutSystems 11, this becomes:
Client actions:
BiometricCheck()
GenerateDeviceKeyPair()
SignData()
QuickLogin()
Server:
/auth/challenge
/auth/verify
So the reason you don’t see this “out of the box” is:
If you share which plugin you’re using and whether your backend is OutSystems or external, you can layer this flow on top of the plugin you already have.