The Mifos X platform is a cloud-based core banking system for delivering financial services to the poor. We provide a web and mobile interface, our AngularJS Community App and Android Field Officer App for the staff of a financial institution to manage their portfolio and service their clients. The security of their client’s financial data is paramount so we would like to add 2FA as another additional layer of security to the platform when staff are logging in via these apps. The most commons means of accessing Mifos X is via the Community App but we have a need for 2FA for the Android client as well.

The generation and sending of the verification code/one-time password will primarily be via SMS and/or email since that is the most user-friendly and most accessible given the equipment available to staff using Mifos X. However, we should aim to support configurability of other authentication methods via an app or virtual authentication device to generate the verification codes.

Project Tasks

The specific tasks for the project are to:

  1. Stabilize the existing SMS integration in Mifos X

    1. In order for 2FA to work, the organization must have an SMS gateway or Email Service configured

    2. We provide a SMS bridge which integrates out of the box with the Twilio SMS gateway. We would like to improve the process for configuring your SMS gateway by making it more configurable via the UI by simply inputting details of your SMS Gateway.

  2. Generate and store Verification Code/One-Time-Password (OTP) at Mifos

    1. This would be done using a java random number generator

    2. This would be stored in-memory and not on disk.

  3. Verification of OTP by Mifos X System

    1. Authentication process of Mifos X must be extended to support the verification and storage of an OTP.

  4. Sending of OTP via SMS and/or Email

    1. Log-in screen for Community App needs to have field and prompt added for 2FA when enabled.

  5. Configuration of 2FA by System Administrator

    1. Enabling of 2FA for the organization

      1. See workflow below for more details.

      2. The UI screens for configuring 2FA will need to be created and added under the System Admin Section

      3. 2FA can only be enabled if an SMS gateway or email service has been configured.

  6. Input of the OTP

    1. See workflow below for more details.

    2. Login screen on both the community app and Android client need to be updated to trigger the sending of the OTP and the entry of the OTP

  7. OTP Verification and Expiration

    1. Configurability of Length of OTP

      1. Default should be six digits

    2. Configurability of Validity Period of OTP: How long the OTP will stay valid before it expires must be developed

      1. Default of 5 minutes (300 seconds)

    3. Configurability of Length of Remember Me Period: We will we allow an option for recognized devices to be remembered (not requiring 2FA if for a defined period of time)

      1. Default of 15 days


Workflow


System Administrator

This is the workflow for enabling Two-Factor Authentication from the perspective of a System Administrator at the financial institution.

  1. Enable Two-Factor Authentication

    1. System administrator navigations to Administration >> System >> Two Factor Authentication

  2. Configuration Wizard

    1. System administrator is prompted with a wizard-like interface to configure 2FA

    2. It will first check if an SMS gateway or email service is configured, if not, it will directly display the screens to configure the email or SMS gateway right from the wizard.

    3. Once the messaging service is configured, system administrator must specify the configuration settings for the generation of the OTP

      1. # of characters

      2. Validity Period for the OTP  (# of minutes)

        1. Specify length in # of minutes before a OTP expires and another needs to be regenerated.

      3. Remember Me Period & its length

        1. Should be able to enable/disable this functionality

        2. Specify length in number of days

  3. Configure Greeting Field

    1. System administrator should have the ability configure a brief greeting (140 characters or less) greeting that accompanies the OTP.

  4. Configuration of Users (optional)

    1. We will only support 2FA being available to all users who will all be prompted to use 2FA once it’s enabled. There will be no configurability around certain users/roles that require 2FA. This will hopefully mitigate the need to manage a 2FA rollout process.

End User

This is the workflow from the perspective of an end user attempting to log in for the first time using Two-Factor Authentication.

  1. User navigates to the Community App log-in screen from their web browser.

    1. Should be prompted with a message stating that Two-Factor Authentication has been enabled, with a link to click to generate a one-time password.

      1. Open Question - is this at the initial log-in screen (before logging in with existing credentials) or on a second page after they’ve logged in with their credentials

    2. System prompts them with a message stating that a OTP will be sent to them via SMS or email and states which phone number or email address it is going to. User confirms this and clicks next.

      1. User should receive the OTP via SMS or Email along with the configured greeting message

      2. Validity period should be long enough such that they have time to for the SMS/email to be received and still input OTP.

    3. User is prompted with screen to input OTP.

      1. There should also be a check-box below to allow system to remember this device. If checked, user won’t be prompted to input OTP for whatever the length of the remember-me period is

        1. General message about this should be a trusted, private device they use frequently should be provided.

The same should be replicated for a user logging into to the Android field operations app.

Skillsets Needed


Generation and Configuration of OTP

  • Java

Configuration of Authentication with Mifos X

  • Java, Spring, JAX-RS, JPA

User Interface Development for Web App

  • AngularJS, Javascript

User Interface Development for Android

  • Android



  • No labels