๐ Authentication Flowยถ
sequenceDiagram
participant Bank
participant Unibeam
participant Redis
participant SMSC
participant Applet
Bank->>Unibeam: HTTPS: SimApprovalRequest\n{msisdn, cbUrl, requestId, message}
Note over Bank: Listens on https://cb.x.com
Note over Unibeam: Check if hashed MSISDN exists in Redis
Unibeam->>Redis: getAppletDetails(hashedMsisdn)
Redis-->>Unibeam: AppletDetails
Unibeam->>Redis: saveNotificationForAppletId\nSTX+msgId(3222)+notificationId+popupText+popupDuration+ETX
Unibeam->>SMSC: wakeUpNotification\nSTX+msgId(3122)+ETX
SMSC->>Applet: Class 2 SMS\nSTX+msgId(3122)+ETX
Applet->>Unibeam: TCP: PollRequest\nSTX+msgId(3101)+appletId+ETX
Unibeam->>Applet: TCP: Notification\nSTX+msgId(3222)+notificationId+popupText+popupDuration+ETX
Note over Applet: Display popup: "Please Approve"\n[OK] [Cancel]
Applet->>Unibeam: TCP: NotificationAck\nSTX+msgId(3221)+appletId+notificationId+status+simUID+deviceUID+lastImeiChange+ETX
Note over Unibeam: Hash simUID and deviceUID with bank's ID and SECRET
Unibeam->>Bank: HTTPS (POST https://cb.x.com)\nSimApprovalResponse\n{responseType, requestId, status, simIdentifier, deviceIdentifier, lastImeiChange}
Authentication Flow Summaryยถ
This document describes the authentication flow between a Bank, Unibeam, Redis, SMSC, and an Applet:
- The Bank sends a SimApprovalRequest to Unibeam via HTTPS.
- Unibeam checks Redis for applet details using a hashed MSISDN.
- Unibeam saves a notification in Redis and sends a wake-up notification to SMSC.
- SMSC delivers a Class 2 SMS to the Applet.
- The Applet polls Unibeam for notifications and displays a popup for user approval.
- The Applet sends a NotificationAck back to Unibeam with status and device info.
- Unibeam hashes device identifiers and responds to the Bank with the approval result via HTTPS.
The flow ensures secure communication and verification between all parties for SIM approval