Skip to content

๐Ÿ” 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