1. Kiến trúc tổng thể
Giải pháp dựa trên cơ chế Out-of-Band (OOB) Authentication. Trong đó, External App đóng vai trò là thiết bị yêu cầu, SFI CRM App là thiết bị xác thực, và SFI Server đóng vai trò điều phối thông qua Pusher (https://pusher.com/docs/channels/)
- Giao tiếp chính: HTTPS (REST API).
- Giao tiếp thời gian thực: WebSocket (Pusher - Private Channel).
- Xác thực: JWT (JSON Web Token) và Auth Signature (Pusher).
2. Quy trình 4 bước như sau
Bước 1: Khởi tạo (tại External App)
- Người dùng nhập STKGD. External App gọi API
POST /login-request tới SFI Server.
- SFI Server: Tạo
SessionID (UUID) và temp_tokentrả về.
- Kết quả: External App nhận được
SessionID và temp_token.
Bước 2: Thiết lập "Phòng chờ" (Kết nối Pusher)
- External App dùng SDK Pusher để subscribe vào
private-auth.{SessionID}.
- Cơ chế Private: SDK tự động gọi tới Auth Endpoint được chỉ định khi khởi tạo, ví dụ
https://[SFI_SERVER_DOMAIN]/broadcasting/auth trên SFI Server, gửi kèm temp_token trong Header.
- SFI Server: Kiểm tra token, nếu khớp thì tạo và trả Signature để Pusher cho phép External App "vào phòng" lắng nghe.
Bước 3: Phê duyệt (tại SFI CRM App)
- SFI Server gửi Push Notification tới SFI CRM App / Hoặc vuốt xuống ở Home / Hoặc đang ẩn app mở lên / Hoặc mở app khi chưa mở.
- Người dùng mở SFI CRM App, xem thông tin và chọn Approve hoặc Reject.
- SFI CRM App gọi API lên SFI Server để Approve hoặc Reject yêu cầu đăng nhập.
Bước 4: Hoàn tất (Real-time)