Blog

API With KBank

KNOWLEDGE

API กรณีศึกษา KBANK/KBTG พร้อมตัวอย่างการทำ Two Way SSL

DECEMBER 01, 2020

API หนึ่งในเทคโนโลยีที่พลิกประวัติศาสตร์การเชื่อมต่อข้อมูล ด้วยคุณสมบัติที่สะดวก รวดเร็วและปลอดภัย จึงนิยมนำมาปรับใช้กับอุตสาหกรรมทางการเงิน การพัฒนาผลิตภัณฑ์และการให้บริการที่ดีกว่าเดิมกับลูกค้า โดยในบทความนี้ยกตัวอย่างการต่อ API ของ KBank ที่นำเทคโนโลยีดังกล่าวมาปรับใช้งานจริง!

API คืออะไร

API หรือ Application Programming Interface คือ ช่องทางการเชื่อมต่อข้อมูลระหว่างแอปฯหรือเว็บไซต์กับ Server โดยเริ่มจากการนำมาปรับใช้ในองค์กร ด้วยการแลกเปลี่ยนข้อมูลภายใน (Private API) แต่ในปัจจุบันมีการนำมาใช้แลกเปลี่ยนระหว่างองค์กรมากขึ้น Private API ที่เคยจำกัดเฉพาะภายในจึงกลายเป็น Open API ที่สามารถเผยแพร่และแบ่งปันข้อมูลซึ่งกันและกันได้

โดย Concept ของ API คือ การกำหนดช่องทางและรูปแบบในการเชื่อมต่อข้อมูลจนไปถึงความปลอดภัยของข้อมูล เช่น Protocol ที่ใช้, Format ของข้อมูล, การเข้ารหัสและการยืนยันตัวตน เป็นต้น

ตัวอย่างบริการที่ใช้งานผ่าน API

QR Payment Service เป็นหนึ่งบริการที่ใช้งาน API โดยรูปแบบการทำงานของ QR Payment คือการสร้างข้อมูล ให้ลูกค้าชำระค่าสินค้าและบริการในรูปแบบของ QR Code (แบบ Dynamic) ซึ่งการเชื่อมต่อ API เริ่มต้นจากการที่ Partner ส่งข้อมูลมายัง API (ข้อมูลคือ จำนวนเงินหรือค่าใช้จ่าย) จากนั้น API จะส่งข้อมูลกลับไปที่ Partner เพื่อแปลงจากข้อมูลดิบเป็น QR Code ให้ลูกค้าสามารถสแกนชำระค่าบริการต่อไป

API with KBank

API with KBank

ภาพ: ตัวอย่างบริการผ่าน API

Open Banking กรณีศึกษา KBank และ KBTG

Open Banking คือ การที่ธนาคารเปิดบริการทางเงินผ่าน API ด้วยการแลกเปลี่ยนข้อมูลกับ Partner ทั้งที่เป็นธุรกิจอื่นและสถาบันทางการเงินด้วยกันเอง โดยการแบ่งปันข้อมูลจะสามารถช่วยพัฒนาผลิตภัณฑ์และบริการที่ตอบสนองการใช้งานกับลูกค้าได้

KBank และ KBTG กับการทำ Open Banking

KBank และ KBTG ผู้นำสถาบันการเงินของประเทศไทยได้ทำ Open Banking ด้วยการปล่อยผลิตภัณฑ์ API ที่ช่วยผลักดันธุรกิจด้านการบริการ ที่ให้ความช่วยเหลือทางด้านเทคโนโลยีทางการเงินให้กับผู้ประกอบการ ดังนี้

  • Inward Remittance บริการเข้าถึงบัญชีหลากหลายธนาคาร โดยไม่หักค่าธรรมเนียมจากยอดเงินเหมาะสำหรับธุรกิจด้านการเงินและการขายของออนไลน์
  • QR Payment บริการรับชำระค่าบริการผ่าน QR Code ตอบสนองสังคมไร้เงินสด สามารถตรวจสอบสถานะการชำระเงินได้สะดวกและปลอดภัย
  • Slip Verification บริการตรวจสอบข้อมูลในการโอนเงิน ทั้งรายการโอน จำนวนเงิน วันและเวลาในการโอนบนแอปพลิเคชัน K PLUS
  • Information Sharing Service via K PLUS บริการเชื่อมต่อข้อมูลของ Partner กับแอปพลิเคชัน K PLUS ทั้งนี้ข้อมูลในการเชื่อมต่อต้องได้รับการยืนยันเพื่อเปิดเผยข้อมูล เพื่อให้การส่งต่อข้อมูลระหว่าง K PLUS กับ Partner สามารถทำได้

API with KBank

ภาพ: ตัวอย่างผลิตภัณฑ์ API จาก KBank และ KBTG

API กับความปลอดภัยในการเชื่อมต่อข้อมูล

ในการส่งต่อข้อมูลให้กับบุคคลภายนอกผ่าน API ความปลอดภัยของข้อมูลเป็นเรื่องสำคัญ เพราะหากเกิดการรั่วไหลของข้อมูลไปยังบุคคลที่ไม่ต้องการ อาจส่งผลเสียมากกว่าผลดี ดังนั้นจึงต้องมีวิธีการรักษาข้อมูลสำคัญ โดยทาง KBank มีมาตรการในการเชื่อมต่อ API ดังนี้

  1. เชื่อมต่อข้อมูลผ่าน Secure Channel ด้วย Two Way SSL ซึ่งเป็นการเข้ารหัสข้อมูล เพื่อจำกัดผู้เข้าถึงเฉพาะผู้ให้บริการเท่านั้นที่จะสามารถเข้าถึงข้อมูลดังกล่าวได้
  2. นำรายการ IP Address ของ Partner มาใส่ข้อมูลในระบบเพื่อเปิดการเข้าถึงข้อมูล ตรวจสอบ Certificate ที่ติดต่อธนาคาร เพื่อตรวจสอบต้นทางที่เรียก API ว่ามาจากแหล่งธนาคารที่น่าเชื่อถือหรือไม่
  3. สุดท้ายคือการยืนยันตัวตนด้วย OAuth 2.0 เพื่อตรวจสอบสิทธิ์ผู้เข้าใช้งานว่ามีสิทธิการเข้าถึงข้อมูลจริงหรือไม่

ปูพื้นฐานเรื่อง TWO WAY SSL

Two Way SSL (Secure Sockets Layer) หรือ Mutual TLS (Transport Layer Security) เป็นระบบการส่งข้อมูลผ่านเครือข่ายที่ต้องยืนยันตัวตนระหว่าง Server กับ Client ด้วย X.509 Certificate และส่งข้อมูลแบบเข้ารหัสจาก Client ไปยัง Server ผ่าน HTTPS Protocol ซึ่ง Port ที่ใช้จะเป็น Port 443 การทำ Two Way SSL เป็นการเพิ่มความปลอดภัย เนื่องจากธนาคารสามารถควบคุมและกำหนดสิทธิ์การเข้าถึง API ผ่านการตรวจ Client Certificate

ฝั่ง Client กับ การเตรียมความพร้อมทำ Two Way SSL

ก่อนทำ Two Way SSL ในด้าน Client มีสิ่งที่ต้องเตรียมดังนี้

  1. เตรียม Client Certificate และ Private Key ทั้งในรูปแบบ .pfx, .pem (ในกรณีรวมมาในไฟล์เดียวกัน) และ .key (ในกรณีแยกไฟล์) และ .cer, .pem, .crt สำหรับ Certificate
  2. การจดทะเบียน Public Certificate ก่อนเชื่อมต่อกับธนาคาร เพื่อรับ Certificate กับ Private Key
  3. ส่ง Client Certificate File ให้กับธนาคารตรวจสอบ

เมื่อฝั่ง Client เตรียมการทั้งสามขั้นตอนแล้ว ทางธนาคารจะนำข้อมูลไปลงทะเบียน Truststore และเมื่อมีการเชื่อมต่อ ทางธนาคารจะสามารถให้เรียกใช้ API ได้

ถึงเวลาเชื่อมต่อ API แบบ Two Way SSL

ก่อนทำการเชื่อมต่อข้อมูล ต้องเริ่มต้นจากการทำ TLS/SSL Handshaking เพื่อเป็นการตรวจสอบความปลอดภัย ด้วยการยืนยันตัวตนของทั้งสองฝ่าย ขั้นตอนในการตรวจสอบและประมวลผลมีดังนี้

API with KBank

ภาพ: ขั้นตอนการประมวลผล

  1. Client ส่ง Request Message ไปทาง Server
  2. Server ตอบรับด้วย Server Certificate โดยภายในจะบรรจุ Public Key ซึ่ง Certificate มาจาก Server Keystore ที่มี Private Key แต่ในการเชื่อมต่อจะส่งแค่เพียงตัว Certificate เท่านั้นไม่รวม Private Key
  3. Client ตรวจสอบและยืนยัน Server Certificate ในกรณีที่ Certificate เป็น Signed Cert ทาง Client จะส่งไปที่ Certificate Authority (CA) ก่อนเพื่อทำการตรวจสอบและยืนยัน
  4. Server ตรวจสอบและยืนยัน Certificate โดยในการตรวจสอบ หากพบว่ามีการลงทะเบียนไว้ที่ Truststore การยืนยันตนจะสำเร็จทันที
  5. Client และ Server แลกเปลี่ยน Message เพื่อยืนยันอีกครั้ง และกำหนดการรับส่งข้อมูล
  6. Client ส่งข้อมูลหา Server ด้วยการเข้ารหัสข้อมูล

วิธีทำทดสอบการเชื่อมต่อแบบ Two Way SSL

สำหรับวิธีการทำทดสอบการเชื่อมต่อ Two Way SSL คือการใช้ cURL (Curl Command) โดย cURL เป็น Free Client Command Line Tool ที่สามารถใช้ส่งข้อมูลผ่าน URL Syntax ทั้ง cURL Support HTTPS และ SSL Certificat Verification สามารถเรียกด้วยการใส่คำสั่งใน Command Line ได้เลย ตัวอย่างคำสั่งมีดังนี้

curl -v --key kbank.test.2.key \
--cert kbank.test.2.crt \
--location
--request POST 'https://openapi-test.kasikornbank.com/exercise/ssl' \
--header 'x-test-mode: true' \
--header 'Content-Type: application/json' \
--header 'Content-Length: 0' \
--header 'Authorization: Bearer EW4iYcACWG4aFsXpGxr1F5AHQ5q3'

API with KBank

ภาพ: ผลลัพธ์ของ cURL

จะเห็นได้ว่าผลลัพธ์ของ cURL มีการแสดงลำดับการทำ TLS/SSL Handshaking และจบด้วย SSL Certificate Verify Ok ซึ่งหลังจากนี้ Client จะส่ง Request Message ไปยัง Server เพื่อประมวลผล จึงจะได้ Response Message กลับมา

อีกหนึ่ง Tools ในการทดสอบ API คือ Postman

Postman คือเครื่องมือในการพัฒนา API สามารถทดสอบการทำงานของ API Service ผ่าน User Interface ผู้ใช้งานสามารถจำลองการเรียก API ผ่านการใช้ API Method (POST, GET, PUT และ URL) ข้อมูลในส่วน Header และ Body จากนั้นกด Send ทาง Postman จะส่งข้อมูล และแสดงผลลัพธ์ในส่วนล่างของจอแสดงผล

API with KBank

ภาพ: หน้อจอ Postman ที่แสดงคำขอและผลลัพธ์

ทั้งนี้การทดสอบ API แบบ Two Way SSL ต้องระบุ Client Certificate and Private Key ที่ใช้ ซึ่งสามารถตั้งค่าได้ที่ Setting > Certificates > Add Certificate ให้ระบุ Domain ปลายทาง, Cert file, Key file และในการตั้งค่าหัวข้อ “SSL Certificate Verification” ควรเปิด “ON” เพื่อให้มีการ Verify Server Certificate

API with KBank

ภาพ: หน้าจอ Postman ในการกำหนด Client Certificate and Private Key

ตัวอย่าง Source Code ในการเชื่อมต่อ Two Way SSL

การเขียนโปรแกรมเชื่อมต่อ Two Way SSL สามารถเขียนได้ด้วยภาษา GO เนื่องจากเป็นภาษาที่เข้าถึงง่าย และมีการใช้งานอย่างแพร่หลาย โดยตัวอย่างการเขียนมีดังนี้

ท่อนแรก (บรรทัดที่ 11-27) คือการเรียกใช้ Client Certificate File และ Private Key File เพื่อทำ Two Way SSL จากนั้นจึงเตรียม HTTP Client ด้วยการนำ Cert มาใช้และระบุ Verify Server Certificate

ท่อนหลัง (บรรทัดที่ 29-43) เป็นการระบุ API Method POST, URL ไปจนถึง Content Header ก่อนส่งออก และนำผลลัพธ์จาก Server มาแสดงผล

Summary

API เป็นหนึ่งในนวัตกรรมที่ช่วยพัฒนาการเชื่อมต่อข้อมูล โดยเฉพาะการทำ Open API จะช่วยให้การทำงานสะดวกและปลอดภัยมากยิ่งขึ้นผ่านการทำ Two Way SSL ในปัจจุบันมีหลายธุรกิจที่ทำ Open API แล้ว อย่างเช่น KBank และ KBTG ที่ทำ Open Banking เพื่อพัฒนาบริการและผลิตภัณฑ์ให้ลูกค้าสะดวกมากยิ่งขึ้น

อ้างอิง: Medium KBTG Life

Back