วิธีการให้สิทธิ์ API
ในบทความนี้ เราจะสำรวจกลไกการให้สิทธิ์ API สามแบบทั่วไป ได้แก่ คีย์ API, การรับรองความถูกต้องแบบพื้นฐาน และโทเค็น OAuth JWT สุดท้ายเราจะพูดถึงวิธีที่ Logto สามารถช่วยปกป้อง API ของคุณด้วยการใช้โทเค็น OAuth JWT ได้อย่างไร
ในบทความนี้ เราจะสำรวจกลไกการให้สิทธิ์ API สามแบบทั่วไป ได้แก่ คีย์ API, การรับรองความถูกต้องแบบพื้นฐาน และโทเค็น OAuth JWT สุดท้ายเราจะพูดถึงวิธีที่ Logto สามารถช่วยปกป้อง API ของคุณด้วยการใช้โทเค็น OAuth JWT ได้อย่างไร
ในโลกปัจจุบัน API เป็นแกนหลักของแอปพลิเคชันสมัยใหม่ พวกเขาเป็นวิธีหลักในการเข้าถึงข้อมูลและฟังก์ชันการทำงานจากบริการแบ็กเอนด์ API ช่วยให้ระบบซอฟต์แวร์ต่าง ๆ จากฝ่ายต่าง ๆ สามารถสื่อสารและแลกเปลี่ยนข้อมูลซึ่งกันและกัน ทำให้พวกเขาขาดไม่ได้สำหรับธุรกิจ อย่างไรก็ตาม API ก็เป็นเป้าหมายที่พบเห็นได้ทั่วไปสำหรับผู้โจมตี ความต้องการในการปกป้อง API จึงแข็งแกร่งกว่าที่เคย
การปกป้อง API เป็นกระบวนการรักษาความปลอดภัย API จากการเข้าถึงโดยไม่ได้รับอนุญาต การใช้งานผิดวัตถุประสงค์ และการโจมตี เป็นองค์ประกอบที่สำคัญของกลยุทธ์ API ในบทความนี้เราจะสำรวจกลไกการปกป้อง API สามแบบที่พบเห็นได้ทั่วไป: คีย์ API, การรับรองความถูกต้องแบบพื้นฐาน และโทเค็น OAuth JWT สุดท้ายเราจะแสดงให้เห็นว่า Logto ปกป้อง API ของคุณด้วยการใช้โทเค็น OAuth JWT อย่างไร
คีย์ API เป็นวิธีการรักษาความปลอดภัย API ที่ง่ายที่สุดและนิยมใช้กันอย่างแพร่หลาย คีย์ API เป็นสตริงอักขระยาวที่สร้างโดยผู้ให้บริการ API และแชร์กับผู้ใช้ที่ได้รับอนุญาต คีย์นี้จะต้องรวมอยู่ในส่วนหัวของคำขอเมื่อเข้าถึง API คีย์ API ง่ายและมีประสิทธิภาพสำหรับความต้องการด้านความปลอดภัยพื้นฐาน ตัวอย่างเช่น บริการยอดนิยมอย่าง Google Maps API และ AWS ให้คีย์ API เพื่อควบคุมการเข้าถึงและตรวจสอบการใช้งาน อย่างไรก็ตาม พวกมันมีข้อจำกัดในแง่ของความปลอดภัย มักใช้สำหรับการสื่อสารแบบเครื่องต่อเครื่อง
ตัวอย่าง
การรับรองความถูกต้องแบบพื้นฐานเป็นวิธีทั่วไปอีกวิธีหนึ่งในการรักษาความปลอดภัย API เป็นรูปแบบการรับรองความถูกต้องแบบง่ายที่อยู่ในโปรโตคอล HTTP มันเกี่ยวข้องกับการส่งชื่อผู้ใช้และรหัสผ่านในส่วนหัวของคำขอ เซิร์ฟเวอร์จะตรวจสอบข้อมูลรับรองและส่งคืนทรัพยากรที่ร้องขอหากข้อมูลเป็นความจริง ตัวอย่างเช่น แอปพลิเคชันเว็บและ API แบบ RESTful หลายตัวใช้การรับรองความถูกต้องแบบพื้นฐานเป็นวิธีการรับรองความถูกต้องที่รวดเร็วและง่ายดาย การรับรองความถูกต้องแบบพื้นฐานปลอดภัยกว่าคีย์ API เพราะมันสามารถใช้ชื่อผู้ใช้และรหัสผ่านแทนคีย์คงที่ได้ อย่างไรก็ตาม มันยังไม่ปลอดภัยพอสำหรับข้อมูลที่ละเอียดอ่อน เมื่อข้อมูลประจำตัวถูกส่งในรูปแบบข้อความธรรมดา พวกมันจึงเสี่ยงต่อการถูกดักจับ การรับรองความถูกต้องแบบพื้นฐานเหมาะสำหรับระบบภายในที่การเชื่อมต่อเครือข่ายมีความปลอดภัย เช่น การสื่อสารระหว่างเครื่องกับเครื่อง
ตัวอย่าง
หรือ
JSON Web Token (JWT) ซึ่งกำหนดโดย RFC 7519 เป็นมาตรฐานเปิดสำหรับการส่งข้อมูลระหว่างฝ่ายต่าง ๆ อย่างปลอดภัยในรูปแบบ JSON มันถูกใช้กันทั่วไปในการรับรองความถูกต้องและอนุญาตในแอปพลิเคชันเว็บและ API
JWT ที่ลงนามแล้วมีรูปแบบดังนี้:
มันประกอบด้วย 3 ส่วนที่แยกด้วย . : ส่วนหัว ไจโหลด และลายเซ็น
ตัวอย่าง JWT:
OAuth เป็นมาตรฐานเปิดที่ครอบคลุมสำหรับการรักษาความปลอดภัย API และสำหรับการมอบหมายการเข้าถึงที่มักใช้เป็นวิธีการให้ผู้ใช้บริการออนไลน์อนุญาตเว็บไซต์หรือแอปพลิเคชันเข้าถึงข้อมูลของพวกเขาในเว็บไซต์อื่น ๆ โดยไม่ต้องให้รหัสผ่าน
เมื่อใช้รวมกับ JWT โทเค็น OAuth JWT ให้โซลูชันความปลอดภัยที่แข็งแกร่ง แทนที่จะแพร่ข้อมูลที่ละเอียดอ่อนเช่นชื่อผู้ใช้และรหัสผ่านในแต่ละคำขอ โทเค็น OAuth JWT ถูกออกให้กับลูกค้าที่ได้รับอนุญาตเมื่อการรับรองความถูกต้องสำเร็จ โทเค็นเหล่านี้ประกอบด้วยข้อมูลเกี่ยวกับผู้ใช้และการอนุญาตของพวกเขา นอกจากนี้โทเค็น JWT ลงนามดิจิทัลเพื่อป้องกันการปลอมแปลงและสามารถหมดอายุได้ ซึ่งถือเป็นชั้นความปลอดภัยเพิ่มเติม
หนึ่งในประโยชน์สำคัญของโทเค็น OAuth JWT คือความยืดหยุ่นของมัน สามารถใช้กับแอปพลิเคชันประเภทต่าง ๆ รวมถึงแอปเว็บและแอปมือถือ โซลูชันการลงชื่อเข้าใช้งานครั้งเดียว และอื่น ๆ ตัวอย่างเช่น แพลตฟอร์มโซเชียลมีเดียใหญ่ ๆ เช่น Facebook, Twitter, และ LinkedIn ใช้โทเค็น OAuth JWT เพื่อรับรองความถูกต้องของผู้ใช้และทำให้แอปพลิเคชันจากภายนอกสามารถเข้าถึงข้อมูลผู้ใช้อย่างปลอดภัย
ตัวเลือกวิธีการรับรองความถูกต้องขึ้นอยู่กับข้อกำหนดเฉพาะและข้อควรพิจารณาด้านความปลอดภัยของแอปพลิเคชันของคุณ คีย์ API ง่ายแต่มีความปลอดภัยน้อย การรับรองความถูกต้องแบบพื้นฐานให้ความปลอดภัยมากขึ้นแต่ว่าขาดคุณสมบัติการระบุตัวผู้ใช้ ขณะที่โทเค็น OAuth JWT ให้ความปลอดภัยที่แข็งแกร่งและความสามารถในการระบุตัวผู้ใช้ แต่เพิ่มความซับซ้อนในการตั้งค่าและการจัดการ
Logto ให้วิธีที่ง่ายและปลอดภัยในการปกป้อง API ของคุณด้วยการใช้โทเค็น OAuth JWT มันสนับสนุนทั้งมาตรฐาน OAuth 2.0 และ OpenID Connect (OIDC) ให้คุณเลือกวิธีการรับรองความถูกต้องที่เหมาะสมกับความต้องการของคุณมากที่สุด คุณสามารถใช้ flow client_credentials สำหรับการสื่อสารแบบเครื่องกับเครื่อง และ flow authorization_code สำหรับแอปพลิเคชันเว็บ
Logto ใช้ flow client_credentials สำหรับแอปพลิเคชันประเภทเครื่องกับเครื่อง Flow นี้เหมาะสำหรับการสื่อสารบนเซิร์ฟเวอร์แบ็กเอนด์ ซึ่งลูกค้าเป็น confidential client ที่สามารถจัดเก็บข้อมูลรับรองของลูกค้าได้อย่างปลอดภัย มันเป็นที่รู้จักในชื่อ "OAuth สองขา" เพราะไม่เกี่ยวข้องกับผู้ใช้ ข้อมูลรับรองของลูกค้าจะถูกใช้โดยตรงเป็นการอนุญาตรับสิทธิ์ในการเข้าถึง
กระบวนการบูรณาการนั้นเรียบง่ายและตรงไปตรงมา:
โปรดดู เอกสารการบูรณาการเครื่องกับเครื่อง ของเราเพื่อดูรายละเอียดเพิ่มเติม
สำหรับลูกค้าสาธารณะอย่างแอปพลิเคชันเว็บ Logto ใช้ flow authorization_code เพื่อรับรองผู้ใช้ Flow นี้เหมาะสำหรับแอปพลิเคชันเว็บที่ลูกค้าเป็น public client ที่ไม่สามารถจัดเก็บข้อมูลรับรองของลูกค้าได้อย่างปลอดภัย มันเป็นที่รู้จักในชื่อ "OAuth สามขา" เพราะเกี่ยวข้องกับผู้ใช้ ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์รับรองเพื่อรับรองและอนุญาตลูกค้า จากนั้นลูกค้าใช้รหัสอนุญาตเพื่อรับสิทธิ์ในการเข้าถึง
กระบวนการบูรณาการซับซ้อนกว่า flow เครื่องกับเครื่องเล็กน้อย:
โปรดดูบทความของเรา Protect your Express.js API with JWT and Logto เพื่อดูตัวอย่างที่ครบถ้วนเกี่ยวกับการบูรณาการ Logto กับ React และการเข้าถึง API เซิร์ฟเวอร์ Express ของคุณด้วยโทเค็น JWT