架構
理解行動端 callback 與 server-to-server 的資料路徑。
資料流
- 第三方 App 產生不可預測的
state並開啟ekyc://authorize。 - eKYC App 驗證會員身份,並向平台請求可信任的 Partner Auth preview。
- App 顯示 Application、Merchant、環境、最新 Eligibility 與所請求的 scopes。
- Laravel 記錄 consent,並建立有效期 5 分鐘、單次使用的 authorization code。
- eKYC App 只把
code與state回傳到 allowlist 中的 callback。 - Application 後端以
client_secret交換 code。 - 後端使用有效期 1 小時的 Bearer token 呼叫授權範圍內的身份 API。
商業與決策流
可信任的 ownership 鏈為 Organization → Merchant → Partner Client。KYC application、Device enrollment、Risk Signal 與 Eligibility decision 都保留 Merchant context。Partner 讀取一律採用 Client 所屬 Merchant 的視角,不接受串接方任意指定的 merchant identifier。
Production 環境的 KYC 核准、授權範圍內的 Partner identity/KYC/risk 讀取、正式 Eligibility decision,以及有效的 merchant-scoped Device heartbeat 或定位狀態,都會建立 append-only 的 Usage Event 紀錄。平台會依 verified identity、Organization 與 Asia/Taipei 曆月去重成一位每月有效會員。
信任邊界
行動端或瀏覽器端永遠不會拿到 partner client_secret。Callback 永遠不包含結構化 OCR 資料、證件影像、自拍影像、media path 或 partner access token。
Laravel 仍是身份、狀態、consent、存取控制與稽核的唯一權威。內部 ML service 只負責推論,不是對外的串接介面。