• Personal access token
  • Authentication

Personal access token (PAT) คืออะไร? โทเคน API ที่ปลอดภัยยิ่งขึ้น

อธิบายการทำงานของ personal access tokens (PATs), เมื่อควรใช้, วิธีรองรับการยืนยันตัวตน API ในบริการของคุณ, และความแตกต่างจาก API keys, API tokens, bearer tokens, OAuth tokens และรหัสผ่าน

Ran
Ran
Product & Design

หยุดเสียเวลาเป็นสัปดาห์กับการยืนยันตัวตนผู้ใช้
เปิดตัวแอปที่ปลอดภัยเร็วขึ้นด้วย Logto ผสานการยืนยันตัวตนผู้ใช้ภายในไม่กี่นาทีและมุ่งเน้นที่ผลิตภัณฑ์หลักของคุณ
เริ่มต้นใช้งาน
Product screenshot

Personal Access Tokens (PATs) คือโทเคนที่ผู้ใช้สร้างขึ้นมาเพื่อใช้แทนรหัสผ่านในการเรียกใช้งาน API ถูกออกแบบมาสำหรับผู้ใช้แต่ละราย PATs ให้การเข้าถึงทรัพยากรอย่างปลอดภัยและควบคุมได้

ยืนยันตัวตนได้ง่าย ควบคุมสิทธิ์ได้ละเอียด ทำงานลื่นไหล นี่เป็นเพียงตัวอย่างบางข้อที่ทำให้นักพัฒนาและทีมผลิตภัณฑ์ทั่วโลกไว้วางใจใน personal access tokens เพื่อเสริมประสิทธิภาพการทำงาน ไม่ว่าจะเป็นการจัดการ CI/CD pipeline, การเชื่อมต่อ API หรือการเข้าถึงเครื่องมือต่าง ๆ

กำลังสงสัยว่า PATs ทำงานอย่างไร, มีข้อดีอย่างไร หรือควรเลือกใช้เมื่อไร? คู่มือนี้มีคำตอบให้

Personal access token คืออะไร?

Personal access token คือวิธีการยืนยันตัวตนแบบชั่วคราวที่ปลอดภัย เพื่อเข้าถึงทรัพยากรและบริการส่วนตัวของคุณผ่าน API โดยเฉพาะอย่างยิ่งนักพัฒนานิยมใช้เพื่อให้งานอย่างการเข้าถึง API หรือทำระบบอัตโนมัติ ง่ายและมีประสิทธิภาพมากขึ้น

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

คุณสมบัติเด่นของ personal access tokens:

  • เป็นมิตรกับนักพัฒนา: personal access tokens จัดการง่ายกว่ากระบวนการ OAuth เต็มรูปแบบ เหมาะสำหรับสคริปต์ ระบบอัตโนมัติ หรือ CI/CD pipelines
  • มีหลายโทเคน: ผู้ใช้สามารถสร้างและจัดการ personal access tokens หลายอัน โดยแต่ละอันสำหรับบริการหรือจุดประสงค์ที่ต่างกัน
  • เจาะจงผู้ใช้: ต่างจาก global API keys, personal access tokens จะผูกกับบัญชีผู้ใช้แต่ละคน สมาชิกทีมอาจต้องสร้างโทเคนแยกสำหรับการแบ่งปันการเข้าถึง
  • สิทธิ์ละเอียด: personal access tokens สามารถกำหนด scope เฉพาะเจาะจงเพื่อจำกัดการเข้าถึงเฉพาะที่จำเป็นต้องใช้เท่านั้น
  • กำหนดเวลาหมดอายุได้: personal access tokens คอนฟิกให้หมดอายุได้ ลดช่องโหว่หากเกิดการรั่วไหล
  • ยกเลิกได้ง่าย: ไม่เหมือนรหัสผ่าน personal access tokens ยกเลิกหรือออกใหม่ได้ทันทีโดยไม่กระทบข้อมูลรับรองหลักของบัญชี

Personal access token vs. Bearer token vs. API token

  1. Personal access token คือประเภทหนึ่งของ API token: Personal access token เป็น API token ระดับผู้ใช้ที่ผูกกับบัญชีผู้ใช้ ให้สิทธิ์เข้าถึงทรัพยากรในระบบในนามของผู้ใช้ PATs ปลอดภัยกว่า traditional API keys เพราะควบคุมสิทธิ์ได้ละเอียด เช่น จำกัดเข้าถึง repository หรือองค์กรที่ระบุ และกำหนดวันหมดอายุเสริมความปลอดภัย
  2. Personal access token ใช้เป็น Bearer token ได้: Bearer token คือวิธี authorize กับ API ซึ่งมักสร้างแบบไดนามิกด้วย OAuth หรือ JWT personal access token คือ static version ของ bearer token ที่ผู้ใช้สร้างเอง (เช่นบน GitHub) เวลาเรียก API ผ่าน GitHub PAT ให้แนบข้อความใน request header เป็น authorization: bearer <your-pat> ในกรณีนี้ PAT ทำหน้าที่เป็น bearer token
  3. API token คือคำกว้าง ๆ: API token คือคำรวมสำหรับโทเคนทุกประเภทที่ใช้ยืนยันตัวตนเมื่อเรียก API เช่น bearer tokens, OAuth tokens, personal access tokens PATs กับ bearer tokens คือรูปแบบเจาะจงของ API tokens

เลือกกลไก AuthN และ AuthZ ที่เหมาะกับคุณ

ก่อนตัดสินใจใช้ personal access token ต้องเข้าใจบทบาทของมันในระบบการยืนยันตัวตนที่กว้างขึ้น ด้วยตัวเลือกที่หลากหลาย การเปรียบเทียบแต่ละแบบเป็นสิ่งสำคัญ ตารางด้านล่างแสดงข้อแตกต่างระหว่าง Personal access tokens (PATs), รหัสผ่าน, API Keys และ OAuth tokens เพื่อช่วยให้คุณตัดสินใจได้อย่างเหมาะสม

  1. Personal access token: วิธีการยืนยันตัวตนน้ำหนักเบา เหมาะกับการทำงานอัตโนมัติหรือเข้าถึง API ให้อำนาจควบคุมสิทธิ์ได้ละเอียด ปลอดภัยและเหมาะกับแต่ละงาน
  2. รหัสผ่าน: วิธีดั้งเดิมสำหรับยืนยันตัวตนเพื่อเข้าบัญชีผู้ใช้จากอินเตอร์เฟซ ให้สิทธิ์เท่ากับเจ้าของบัญชี ไม่สามารถแบ่งแยกสิทธิ์ได้
  3. OAuth token: วิธีที่ปลอดภัยที่สุดสำหรับเปิดให้บริการ third-party เข้าถึงข้อมูลได้จำกัด ผู้ใช้สามารถกำหนดขอบเขตการเข้าถึงโดยไม่ต้องเปิดเผยรหัสผ่าน ทั้งปลอดภัยและยืดหยุ่น
  4. API key: ใช้กันมากสำหรับอัตโนมัติ API มักผูกกับ service account ไม่ใช่บัญชีส่วนตัว แต่ไม่สามารถควบคุมสิทธิ์ได้ละเอียดแบบ PAT หรือ OAuth
คุณสมบัติรหัสผ่านPersonal access tokenOAuth tokenAPI key
คำนิยามผู้ใช้ยืนยันตัวตนด้วยไอดีและรหัสผ่านโทเคนสำหรับเข้าถึงทรัพยากรหรือ API เฉพาะ มักมีสิทธิ์ที่จำกัดระบบให้ผู้ใช้อนุญาตให้แอป 3rd-party เข้าถึงข้อมูลโดยไม่ต้องแชร์ข้อมูลรับรอง เช่น ล็อกอิน Googleสตริงเฉพาะใช้ยืนยันตัวลูกข่ายเวลาเรียก API
การจำกัดขอบเขต (Scope)มักให้สิทธิ์เต็มในบัญชีเมื่อเข้าสู่ระบบแล้วจำกัดสิทธิ์ได้ละเอียดผู้ใช้ระบุขอบเขตที่อนุญาตแอป third-party ได้มักให้สิทธิ์กับ resource ใน API เฉพาะ ไม่มีการควบคุมละเอียด
การเพิกถอนเพิกถอนได้ยาก ต้องเปลี่ยนรหัสผ่านและอาจกระทบบริการอื่นเพิกถอนได้ง่ายโดยผู้ใช้หรือแอดมินเพิกถอนได้โดยไม่กระทบข้อมูลรับรองผู้ใช้เพิกถอนได้หรือออกใหม่ในระดับ API service
วันหมดอายุไม่มีวันหมดอายุ เว้นแต่ผู้ใช้เปลี่ยนเองมักอยู่ได้นาน แต่กำหนดวันหมดอายุได้access tokens มีวันหมดอายุ refresh token ต่ออายุได้มักอยู่ได้นาน แต่ก็หมุนหรือจำกัดที่ API provider
ความง่ายในการใช้จำง่ายแต่มักเสี่ยงหากทำหล่นสร้างง่าย ใช้งานสะดวกกับงานอัตโนมัติต้องมีปฏิสัมพันธ์ผู้ใช้ตอนแรก แต่ให้ delegation ที่ปลอดภัยใช้ง่ายใน API request แต่ไม่เหมาะกับการยืนยันตนผู้ใช้หน้าแอป
เหมาะกับผู้ใช้ทั่วไปล็อกอินหรือยืนยันตนเบื้องต้นงานอัตโนมัติ, จำกัดสิทธิ์ API, พัฒนาใน CI/CD pipelineแอป 3rd-party ที่ต้องการสิทธิ์จำกัดและไม่ต้องเก็บรหัสผ่านbackend, server-to-server, public APIs
ความเสี่ยงถูกขโมย = ได้สิทธิ์เต็มบัญชีโทเคนหลุด = ให้เฉพาะสิทธิ์ที่ระบุ เพิกถอนได้ง่ายtoken หลุด = 3rd-party ใช้งานในขอบเขตที่ได้ถูกขโมย = ใช้เข้าถึง server-to-server ได้

Personal access token ทำงานอย่างไร?

Personal access tokens ใช้หลักการเดียวกับ OAuth access tokens แต่โดยทั่วไปจะเป็นสตริงที่อ่านเนื้อหาไม่ได้ เมื่อเข้าสู่ระบบ (เช่น GitHub) จะสร้าง PAT ผูกกับบัญชีผู้ใช้ พร้อมกำหนดสิทธิ์ โทเคนนี้ใช้แทนรหัสผ่านในการเรียก request ต่าง ๆ ตัวอย่างเช่น อ่าน repository ส่วนตัวผ่าน API

ปกติ PAT จะแนบไปกับ request headers ตัวอย่างนี้:

โดยการส่ง PAT แบบนี้ เซอร์วิสจะตรวจสอบตัวตนคุณ อ่านสิทธิ์ของโทเคนว่าทำอะไรได้ แล้วตัดสินใจตอบข้อมูลหรือดำเนินการที่ร้องขอให้

วิธีใช้ personal access token

  • สร้าง personal access token: เริ่มที่หน้าสร้าง token ของแพลตฟอร์มที่คุณใช้งาน พร้อมเลือก scope เพื่อกำหนดสิทธิ์การเข้าถึง
  • ยืนยันตัวตนกับ API: เมื่อมีโทเคนแล้ว ใช้มัน authenticate กับบริการต่าง ๆ ที่ต้องการความปลอดภัย แนบ token เป็น bearer ใน authorization header ของ API request ของคุณ
  • เพิกถอนโทเคน: ถ้าต้องการยกเลิก token ให้เพิกถอนในหน้า setting ยืนยันตัวตนของระบบนั้น API request ใด ๆ ที่ใช้ PAT อันนั้นจะถูกปฏิเสธทันที

ควรใช้ personal access token เมื่อไร?

Personal access tokens เหมาะสุด ๆ สำหรับกรณีที่อยากให้เข้าถึง API ได้อย่างปลอดภัย, เป็นมิตรกับนักพัฒนา, จำกัดสิทธิ์ได้เจาะจง ตัวอย่างที่เหมาะ

  • งานอัตโนมัติ: เหมาะสำหรับสคริปต์/เครื่องมือดึงข้อมูลจาก API โดยไม่ต้องฝังข้อมูลสำคัญเช่นรหัสผ่าน
  • ควบคุมสิทธิ์ละเอียด: ให้สคริปต์หรือเครื่องมือเข้าถึง repository, resource ที่ระบุโดยไม่ต้องให้สิทธิ์เต็ม
  • เข้าถึงชั่วคราว: ใช้ในเหตุการณ์ที่ควบคุมกำหนดเวลาได้ดี ลดความเสี่ยง
  • เข้าใช้งานนักพัฒนาง่าย: ทางเลือกสะดวกสำหรับนักพัฒนารายบุคคลโดยไม่ต้องวุ่นวายกับ OAuth เต็มชุด
  • เชื่อมต่อกับเครื่องมือ 3rd-party: จำกัดการเข้าถึงแอคชั่นที่จำเป็นเท่านั้น เช่น ใช้ project management tool แล้วต่อกับ Slack ให้แค่สร้างและอัพเดท task ได้แต่ไม่ต้องเข้าสิทธิ์เต็ม

GitHub เริ่มใช้ personal access token ตั้งแต่ปี 2013 ซึ่งเป็นที่นิยมมากขึ้นเพราะใช้ง่ายและยืดหยุ่น เครื่องมือสำหรับนักพัฒนาและ SaaS platform หลายเจ้ารองรับ PAT ช่วยให้นักพัฒนาเลือกใช้ได้สะดวก:

  • GitHub/GitLab/Azure DevOps (เครื่องมือพัฒนา): ช่วยอัตโนมัติ pipeline, เชื่อมต่อกับเครื่องมืออื่น, จัดการ repository ต่าง ๆ

    github-personal-access-token.png

  • Figma (เครื่องมือออกแบบ): ช่วยประสานงานออกแบบร่วมกันง่ายขึ้นผ่าน API

    figma-personal-access-token.png

  • Atlassian Jira / Asana (ระบบบริหารโปรเจกต์): สร้าง/แก้ไข/ลบงาน, จัดการ sprint และโปรเจกต์ด้วย API ได้ง่าย

    jira-personal-access-token-admin.png

แชร์ personal access token กับผู้ใช้คนอื่นได้ไหม?

คำตอบสั้น ๆ—ห้าม!

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

เปิดให้แอปของคุณสร้าง personal access token ด้วย Logto

ไม่ว่าจะเป็นบริการ B2B หรือผลิตภัณฑ์ AI สมัยใหม่ การทำ AuthN/ AuthZ ที่เป็นมิตรกับนักพัฒนาเป็นสิ่งสำคัญ Personal access token จะเปิดโอกาสใหม่ ๆ ให้ธุรกิจของคุณ

Logto ซึ่งเป็นโซลูชั่น Customer Identity and Access Management (CIAM) ที่ครบวงจร ให้คุณสร้าง จัดการ และเพิกถอน personal access token ได้ง่าย ๆ วิธีเริ่มต้น:

  1. ไปที่ Logto Console > User Management
  2. เข้าไปที่โปรไฟล์ของผู้ใช้ที่ต้องการจัดการ personal access tokens

personal-acess-tokens-management.webp

ฟีเจอร์ Logto ช่วยให้คุณ:

  • สร้าง personal access tokens ใหม่
  • จัดการ token ได้หลายอันสำหรับผู้ใช้คนเดียว
  • กำหนดวันหมดอายุ token ตามต้องการ
  • เปลี่ยนชื่อ token เพื่อจัดกลุ่มงานง่ายขึ้น
  • เพิกถอน token ที่ไม่จำเป็น

logto-create-personal-access-token.png

นอกจากนี้ คุณยังเปิดให้ผู้จัดการ personal access tokens ด้วยตัวเองในหน้า setting ได้ผ่าน Logto Management APIs