網路城邦
上一篇 回創作列表 下一篇   字體:
(C#)串接TWCA認證功能API教學
2023/10/25 14:38:06瀏覽53|回應0|推薦0

概述

TWCA提供API串接其電話號碼核實功能,可用來核實用戶門號與其身分是否相符,避免用戶利用非本人門號在網站執行惡意行為,但由於其成本較高,建議作為網站防範惡意行為的最終手段,應先以其他基本方式過濾網站惡意用戶。

流程

TWCA採用OAuth方式先對來源進行驗證,驗證完成後會提供一組Token供我方網頁端導向到用戶認證頁面,用戶於該認證頁面完成動作後,TWCA會回傳一組認證結果到我方提供的API,我方在根據該結果做後續用戶處理即可,詳細流程如下。

1.我方程式Controller發送一組請求到TWCA Login API

2.若API回傳的ResultCode=”S”,代表所傳送的需求與TWCA所要求的格式相符。

3.將API回傳的資料組成TWCA DO API 所需要的格式,以Form post的方式導向到TWCA提供的網頁。

4.TWCA Server端處理完用戶驗證結果後,會以Http Web Post的形式傳送資料回我方發送請求到TWCA Login API時資料內所帶的ReturnURL。

加密

不論是發送請求到TWCA的哪個API,TWCA都要求傳送一組IdentifyNo作為雙方驗證資料正確性的依據,其規則是將除了自身及ReturnURL以外的參數按照順序串聯後, 先將字串進行UTF16-LE編碼轉為binary後,使用SHA256進行加密後將結果的Hash值轉成小寫字串,以下以C#程式碼為例。

1.將字串進行UTF16-LE 編碼轉為binary
   var IdentifyNo = Encoding.GetEncoding("UTF-16LE").GetBytes(組合完字串);

2.使用SHA256進行加密
  var IdentifyNoStr = new SHA256CryptoServiceProvider().ComputeHash(IdentifyNo);

3.SHA256加密完的Hash值用 16 進位字串(英文小寫)表示並轉成小寫字串
   string hexString = BitConverter.ToString(IdentifyNoStr).Replace("-", "").ToLower();

最後得到的hexString即是IdentifyNo要送出的值。

結論

TWCA提供的功能目前較鮮為人知,每個人對於文件的閱讀習慣不同,以及對於規格的描述習慣是造成實作API串接功能困難的主因,為了避免往後開發相關功能時耗費大量時間,花了點時間整理此篇串接流程作為往後開發相關功能之參考依據。

( 知識學習其他 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=acaj2018&aid=179980393