Spring Boot 4 Microservices & REST APIs · บทเรียน

พื้นฐาน OAuth2 และ JWT

ทำความเข้าใจแนวคิดหลักของ OAuth2 สำหรับการอนุญาต และ JSON Web Tokens (JWT) สำหรับแลกเปลี่ยนข้อมูลอย่างปลอดภัย

บทเรียน 1 จาก 312 ขั้นตอน

พื้นฐาน OAuth2 และ JWT เป็นบทเรียน Spring Boot 4 Microservices & REST APIs ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Spring Boot 4 Microservices & REST APIs และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Spring Boot 4 Microservices & REST APIs มีบทเรียนทั้งหมด 3 บทเรียน

เหตุใดความปลอดภัยของ API จึงสำคัญ

เมื่อสร้างแอปพลิเคชัน โดยเฉพาะแอปพลิเคชันที่มี REST API ความปลอดภัยถือเป็นสิ่งสำคัญอย่างยิ่ง คุณกำลังเปิดเผยข้อมูลและความสามารถต่าง ๆ ที่จำเป็นต้องได้รับการปกป้อง

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

AuthN เทียบกับ AuthZ: ความแตกต่างที่สำคัญ

ก่อนเริ่มศึกษา เรามาทำความเข้าใจคำศัพท์สำคัญสองคำนี้ให้ชัดเจนกัน:

  • การยืนยันตัวตน (AuthN): การตรวจสอบว่าผู้ใช้หรือลูกค้าคือใคร เปรียบเสมือนการแสดงบัตรประจำตัวเพื่อพิสูจน์ตัวตน
  • การอนุญาต (AuthZ): การกำหนดว่าผู้ใช้หรือลูกค้าที่ผ่านการยืนยันตัวตนแล้วได้รับอนุญาตให้ทำอะไรได้บ้าง เปรียบเสมือนพนักงานตรวจบัตรที่ตรวจสอบว่าคุณสามารถเข้าไปในพื้นที่ใดพื้นที่หนึ่งได้หรือไม่

OAuth2 มุ่งเน้นที่การอนุญาตเป็นหลัก

ทำความรู้จัก OAuth2: มาตรฐานการอนุญาต

OAuth2 (Open Authorization 2.0) เป็นโพรโทคอลมาตรฐานอุตสาหกรรมสำหรับการอนุญาต โดยช่วยให้แอปพลิเคชันของบุคคลที่สาม (เรียกว่า 'ลูกค้า') เข้าถึงบริการ HTTP (เรียกว่า 'เซิร์ฟเวอร์ทรัพยากร') ได้ในขอบเขตจำกัด โดยดำเนินการแทนผู้ใช้ (เรียกว่า 'เจ้าของทรัพยากร')

สิ่งสำคัญคือ OAuth2 ทำให้เข้าถึงข้อมูลได้โดยที่ผู้ใช้ไม่จำเป็นต้องเปิดเผยข้อมูลรับรอง (ชื่อผู้ใช้และรหัสผ่าน) แก่แอปพลิเคชันลูกค้าโดยตรง

บทบาทใน OAuth2

OAuth2 กำหนดบทบาทหลักสี่บทบาทที่โต้ตอบกันในกระบวนการอนุญาต:

  • เจ้าของทรัพยากร: ผู้ใช้ที่เป็นเจ้าของทรัพยากรที่ได้รับการปกป้อง
  • ลูกค้า: แอปพลิเคชันที่ขอเข้าถึงทรัพยากรที่ได้รับการปกป้องของเจ้าของทรัพยากร
  • เซิร์ฟเวอร์การอนุญาต: เซิร์ฟเวอร์ที่ยืนยันตัวตนของเจ้าของทรัพยากรและออกโทเค็นการเข้าถึงให้ลูกค้า
  • เซิร์ฟเวอร์ทรัพยากร: เซิร์ฟเวอร์ที่ให้บริการทรัพยากรที่ได้รับการปกป้อง และสามารถรับและตอบคำขอทรัพยากรที่ได้รับการปกป้องโดยใช้โทเค็นการเข้าถึง

OAuth2 อนุญาตการเข้าถึงอย่างไร

OAuth2 ใช้ 'ประเภทการให้สิทธิ์' ที่แตกต่างกัน (เรียกอีกอย่างว่าโฟลว์) เพื่อออก โทเค็นการเข้าถึง โทเค็นการเข้าถึงคือข้อมูลรับรองที่ให้สิทธิ์ลูกค้าเข้าถึงทรัพยากรเฉพาะบนเซิร์ฟเวอร์ทรัพยากร

การเลือกประเภทการให้สิทธิ์ขึ้นอยู่กับประเภทของลูกค้า (เช่น แอปพลิเคชันเว็บ แอปมือถือ แอปพลิเคชันฝั่งเซิร์ฟเวอร์) และข้อกำหนดด้านความปลอดภัยของลูกค้า โฟลว์รหัสการอนุญาต ถูกใช้อย่างแพร่หลายสำหรับแอปพลิเคชันเว็บแบบดั้งเดิม

แนะนำ JWT: ข้อมูลที่ปลอดภัย

JSON Web Token (JWT) ซึ่งออกเสียงว่า 'จอต' เป็นวิธีที่กะทัดรัดและปลอดภัยต่อ URL สำหรับแสดงข้ออ้างสิทธิ์ที่จะถ่ายโอนระหว่างสองฝ่าย ข้ออ้างสิทธิ์เหล่านี้คือข้อมูลเกี่ยวกับเอนทิตี (โดยทั่วไปคือผู้ใช้) และข้อมูลเมตาเพิ่มเติม

มักใช้ JWT เป็นรูปแบบของโทเค็นการเข้าถึงใน OAuth2 ทำให้สามารถส่งข้อมูลเกี่ยวกับผู้ใช้และสิทธิ์ของผู้ใช้ได้อย่างปลอดภัยในรูปแบบที่มีข้อมูลครบถ้วนในตัวเอง

โครงสร้างของ JWT

JWT ประกอบด้วยสามส่วน คั่นด้วยจุด (.):

  • ส่วนหัว: มีข้อมูลเมตาเกี่ยวกับโทเค็น เช่น ประเภทของโทเค็น (JWT) และอัลกอริทึมการลงนามที่ใช้ (เช่น HMAC SHA256 หรือ RSA)
  • ส่วนข้อมูล: มี 'ข้ออ้างสิทธิ์' ซึ่งเป็นข้อความเกี่ยวกับเอนทิตี (เช่น ผู้ใช้) และข้อมูลเพิ่มเติม ข้ออ้างสิทธิ์อาจเป็นข้ออ้างสิทธิ์ที่ลงทะเบียนไว้ (เป็นมาตรฐาน) ข้ออ้างสิทธิ์สาธารณะ หรือข้ออ้างสิทธิ์ส่วนตัว
  • ลายเซ็น: ใช้ตรวจสอบว่าผู้ส่ง JWT เป็นบุคคลตามที่ระบุจริง และข้อความไม่ได้ถูกแก้ไข ลายเซ็นนี้สร้างขึ้นโดยใช้ส่วนหัว ส่วนข้อมูล และคีย์ลับ

โครงสร้าง JWT: เจาะลึกยิ่งขึ้น

นี่คือตัวอย่างลักษณะของ JWT ทั่วไป แต่ละส่วนเข้ารหัสด้วย Base64Url:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • ส่วนแรกคือ ส่วนหัว
  • ส่วนที่สองคือ ส่วนข้อมูล
  • ส่วนที่สามคือ ลายเซ็น

แต่ละส่วนเข้ารหัสแยกกัน แล้วนำมาเชื่อมต่อกันด้วยจุด

การถอดรหัสส่วนต่าง ๆ ของ JWT (แนวคิด)

ส่วนหัวและส่วนข้อมูลของ JWT เป็น JSON ที่เข้ารหัสด้วย Base64Url อย่างง่ายดาย ซึ่งหมายความว่าทุกคนสามารถถอดรหัสเพื่ออ่านเนื้อหาได้ การรักษาความปลอดภัยมาจาก ลายเซ็น ซึ่งใช้ตรวจสอบความสมบูรณ์และความถูกต้องแท้จริงของโทเค็น

ลองถอดรหัสสตริง Base64Url ตัวอย่างใน Java:

import java.util.Base64;

public class Main {
  public static void main(String[] args) {
    String encodedHeader = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
    String encodedPayload = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ";

    System.out.println("Decoded Header:");
    decodeAndPrint(encodedHeader);

    System.out.println("\nDecoded Payload:");
    decodeAndPrint(encodedPayload);
  }

  private static void decodeAndPrint(String encodedString) {
    try {
      byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedString);
      String decodedString = new String(decodedBytes, "UTF-8");
      System.out.println(decodedString);
    } catch (Exception e) {
      System.out.println("Error decoding: " + e.getMessage());
    }
  }
}

เหตุใดจึงใช้ JWT

JWT มีข้อดีหลายประการ โดยเฉพาะในระบบแบบกระจาย เช่น ไมโครเซอร์วิส:

  • ไร้สถานะ: เซิร์ฟเวอร์ไม่จำเป็นต้องจัดเก็บข้อมูลเซสชัน JWT แต่ละรายการมีข้อมูลผู้ใช้ที่จำเป็นทั้งหมด
  • รองรับการขยายระบบ: เนื่องจากโทเค็นมีข้อมูลครบถ้วนในตัวเอง บริการใด ๆ จึงสามารถตรวจสอบโทเค็นได้โดยไม่ต้องมีที่จัดเก็บเซสชันส่วนกลาง ทำให้การขยายระบบง่ายขึ้น
  • กะทัดรัดและปลอดภัยต่อ URL: โทเค็นมีขนาดเล็กและส่งผ่านพารามิเตอร์ URL คำขอ POST หรือส่วนหัว HTTP ได้ง่าย
  • มีข้อมูลครบถ้วนในตัวเอง: โทเค็นมีข้อมูลทั้งหมดเกี่ยวกับผู้ใช้ จึงลดความจำเป็นในการค้นหาฐานข้อมูลสำหรับทุกคำขอ

ตรวจสอบความเข้าใจของคุณ

ข้อความใดต่อไปนี้อธิบายวัตถุประสงค์หลักของ OAuth2 ได้ดีที่สุด

สรุปบทเรียน

ในบทเรียนนี้ คุณได้ทำความเข้าใจพื้นฐานของหลักการรักษาความปลอดภัยของ API เราแยกความแตกต่างระหว่าง การยืนยันตัวตน (คุณคือใคร) และ การอนุญาต (คุณทำอะไรได้บ้าง)

คุณได้เรียนรู้เกี่ยวกับ OAuth2 ในฐานะมาตรฐานสำหรับการอนุญาตอย่างปลอดภัย ซึ่งช่วยให้ควบคุมการเข้าถึงทรัพยากรได้ นอกจากนี้ เรายังศึกษา JSON Web Tokens (JWTs) ทำความเข้าใจโครงสร้างและข้อดีของโทเค็นเหล่านี้ในฐานะวิธีส่งข้อมูลที่กะทัดรัดและมีข้อมูลครบถ้วนในตัวเอง โดยมักใช้เป็นโทเค็นการเข้าถึงภายใน OAuth2

เริ่มต้นได้ฟรี

เรียนรู้ Java ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
24
บทเรียน
93

คำถามที่พบบ่อย

บทเรียน “พื้นฐาน OAuth2 และ JWT” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐาน OAuth2 และ JWT” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Spring Boot 4 Microservices & REST APIs ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Spring Boot 4 Microservices & REST APIs มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน OAuth2 และ JWT”

ทำความเข้าใจแนวคิดหลักของ OAuth2 สำหรับการอนุญาต และ JSON Web Tokens (JWT) สำหรับแลกเปลี่ยนข้อมูลอย่างปลอดภัย คุณปฏิบัติ Spring Boot 4 Microservices & REST APIs ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Spring Boot 4 Microservices & REST APIs หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Spring Boot 4 Microservices & REST APIs บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน

บทเรียน “พื้นฐาน OAuth2 และ JWT” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Spring Boot 4 Microservices & REST APIs นี้ได้ไหม

ได้ บทเรียน Spring Boot 4 Microservices & REST APIs ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน OAuth2 และ JWT
  2. การรักษาความปลอดภัย REST Endpoint
  3. การควบคุมการเข้าถึงตามบทบาท
← กลับไปที่ Spring Boot 4 Microservices & REST APIs