This project is a web application demonstrating how to strengthen multifactor security authentication using the Vonage SIM Swap API and Verify v2 API. The application includes a simple bank dashboard and a login form. If the SIM Swap API detects that a phone number was swapped recently, the verification code will not be sent, and additional security measures will be applied. A verification code will be sent via the Verify v2 API to authenticate the user if no recent swap is detected.
- A login form to enter and verify a phone number
- Secure multifactor authentication using Vonage Verify v2
- SIM Swap detection to prevent compromised logins
- Simple bank dashboard after successful login
- A Vonage Developer Account.
- Node.js and npm installed.
-
Clone the repository and change directories
git clone https://github.com/Vonage-Community/demo-sim-swap_verifyv2-javascript-multifactor_authentication cd demo-sim-swap_verifyv2-javascript-multifactor_authentication
-
Install the required packages:
npm install
-
Move the
.env.example
file to.env
file in the project root and include the following environment variables:mv .env.example .env
VONAGE_API_SECRET=your_api_secret VONAGE_APPLICATION_ID=your_application_id VONAGE_APPLICATION_PRIVATE_KEY_PATH=/path/to/your/private.key JWT=your_jwt_token MAX_AGE=72
-
You have the choice to set
RECIPIENT_NUMBER
, to define a different phone number from the one used during SIM Swap to receive the SMS. -
Run the application:
node server.js
-
Launch your web browser and enter the URL:
http://localhost:3000/
The application uses the Vonage SIM Swap API to check whether a given phone number has been swapped in the last few days. This protects users from attacks that exploit SIM swaps.
The Verify v2 API sends a one-time code to the user's phone number for authentication. This verification code will be sent if the SIM Swap API determines that the number has not been recently swapped.
- The user enters their phone number on the login page.
- The SIM Swap API checks whether the number was swapped recently.
- a verification code is sent via the Verify v2 API if no swap is detected.
- After successful verification, the user can access the bank dashboard.