安全

保護 secret、callback、token、身份資料與可稽核性。

必要控制

  • 產生不可預測的 state,將它綁定到發起的 session,並精確比對。
  • client_secret 只保存在後端 secret manager。
  • 把 authorization code 視為單次使用的憑證,並立即交換。
  • Access token 不得出現在 URL、瀏覽器儲存、行動端 log、analytics 與 crash report 中。
  • 註冊精確的 redirect URI;不要使用萬用字元 callback。
  • 只請求目前使用者動作所需的最小 scopes。
  • 不要透過 Partner Auth 代理證件或自拍影像。
  • 不要把 client 端提供的 Merchant identifier 當作授權邊界;商業 context 來自已註冊的 Partner Client。
  • 不要在 App 或瀏覽器中重新計算 Eligibility。請使用最新的後端結果與穩定的 reason code。
  • 不要透過 risk summary 揭露其他 Merchant 的名稱、完整原因、證據、證件、精確位置或原始 telemetry。

目前支援選用的 S256 PKCE。Application 應產生並保存 code_verifier,將對應的 code_challenge 與 code_challenge_method=S256 放入 authorize URI;eKYC App 會原樣保留 challenge 並傳給 authorize API。Token 交換時,後端會驗證 code_verifier,缺漏或不符即拒絕。Verifier 與 client secret 都留在 Application 後端,不傳入 eKYC App 或 callback。

Partner Auth 仍是平台自有協定,不宣稱符合 OAuth 2.1 或 OpenID Connect。目前不提供 refresh、revocation 或 introspection endpoint。Access token 在一小時後過期;需要新 token 時,請重新發起授權流程。

可稽核性

平台會記錄授權核准、token 核發、profile 讀取與授權 OCR 讀取。Application 端不要記錄原始 token、client secret、完整證號或 OCR payload。