Cosmic Module
O
Qubits of DPK
March 20, 2026
Core Open Source
The Analogy
Security in Fineract is like a bank's entrance procedure:
- #Guard at door — checks if you have valid ID (authentication)
- #Role on your badge — teller, manager, auditor (authorisation)
- #Separate floors — each bank client can only see their floor (multi-tenancy isolation)
Authentication — Who Are You?
Basic Authentication (Current Default)
Every API request must include a Base64-encoded username:password in the Authorization header:
javascript
QUBITS OF DPK
Default dev credentials: mifos / password
How Spring Security Processes It
javascript
QUBITS OF DPK
DB Table: m_appuser
sql
QUBITS OF DPK
Passwords are stored as BCrypt hashes, never plain text:
java
QUBITS OF DPK
Authorisation — What Can You Do?
Role-Based Access Control (RBAC)
Fineract uses a permission system:
- AppUser has one or more Roles
- Each Role has a set of Permissions
- Each Permission maps to ONE API action
javascript
QUBITS OF DPK
Permission Naming Convention
javascript
QUBITS OF DPK
How Permission is Checked in Code
java
QUBITS OF DPK
Super User
The mifos account is a super user with all permissions. For production, dedicated role-restricted accounts should be created.
Spring Security Filter Chain
javascript
QUBITS OF DPK
Spring Authorization Server — FINERACT-1984 (OAuth 2.1)
What Is It?
Fineract has integrated Spring Authorization Server (SAS) as an alternative to Basic Auth. This enables OAuth 2.1 / JWT tokens.
The Flow
javascript
QUBITS OF DPK
Why OAuth over Basic Auth?
This is directly relevant to your GSoC proposal FINERACT-2439! The BFF (Backend for Frontend) would use Spring Authorization Server to issue JWT tokens to mobile/web consumers.
Two-Factor Authentication (2FA)
Fineract has optional 2FA for the web UI:
- #User logs in with username/password
- #OTP sent to registered mobile number
- #User submits OTP
- #Session established
Handled by fineract-twofactor module.
HTTPS — Encrypted Communication
All Fineract API calls go over HTTPS (port 8443). In local dev, a self-signed certificate is used, so you need -k in curl to skip certificate validation:
bash
QUBITS OF DPK
Instance Mode Security
This is what your PR #5658 tests. Fineract can run in restricted modes:
java
QUBITS OF DPK