ข้ามไปยังเนื้อหาหลัก

โครงสร้างข้อมูลแอปพลิเคชัน

บทนำ

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

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

แอปพลิเคชันยังถูกใช้ในบันทึกการตรวจสอบ (audit logs) ของ Logto เพื่อติดตามกิจกรรมของผู้ใช้และระบุภัยคุกคามหรือการละเมิดความปลอดภัยที่อาจเกิดขึ้น ด้วยการเชื่อมโยงการกระทำเฉพาะกับแอปพลิเคชันแต่ละตัว Logto สามารถให้ข้อมูลเชิงลึกโดยละเอียดเกี่ยวกับวิธีการเข้าถึงและใช้งานข้อมูล ช่วยให้องค์กรจัดการความปลอดภัยและข้อกำหนดด้านการปฏิบัติตามได้ดียิ่งขึ้น หากคุณต้องการผสานรวมแอปพลิเคชันของคุณกับ Logto ดูที่ ผสานรวม Logto

คุณสมบัติ

Application ID

Application ID คือคีย์ที่สร้างขึ้นโดยอัตโนมัติและไม่ซ้ำกันเพื่อระบุแอปพลิเคชันของคุณใน Logto และถูกอ้างถึงว่าเป็น client id ใน OAuth 2.0

ประเภทของแอปพลิเคชัน

แอปพลิเคชัน สามารถเป็นประเภทใดประเภทหนึ่งต่อไปนี้:

  • Native app คือแอปที่ทำงานในสภาพแวดล้อมเนทีฟ เช่น แอป iOS, แอป Android
  • Single page app คือแอปที่ทำงานในเว็บเบราว์เซอร์ ซึ่งอัปเดตหน้าเว็บด้วยข้อมูลใหม่จากเซิร์ฟเวอร์โดยไม่ต้องโหลดหน้าใหม่ทั้งหมด เช่น React DOM app, Vue app
  • Traditional web app คือแอปที่เรนเดอร์และอัปเดตหน้าเว็บโดยเซิร์ฟเวอร์เพียงอย่างเดียว เช่น JSP, PHP
  • Machine-to-machine (M2M) app คือแอปพลิเคชันที่ทำงานในสภาพแวดล้อมของเครื่องเพื่อการสื่อสารระหว่างบริการโดยตรงโดยไม่ต้องมีการโต้ตอบกับผู้ใช้

Application secret

Application secret คือคีย์ที่ใช้ในการยืนยันตัวตนของแอปพลิเคชันในระบบการยืนยันตัวตน โดยเฉพาะสำหรับ private clients (Traditional Web และ M2M apps) เพื่อเป็นกำแพงความปลอดภัยส่วนตัว

เคล็ดลับ:

Single Page Apps (SPAs) และ Native apps จะไม่มี App secret SPAs และ Native apps เป็น “public clients” และไม่สามารถเก็บความลับได้ (โค้ดเบราว์เซอร์หรือ app bundle สามารถถูกตรวจสอบได้) แทนที่จะใช้ app secret, Logto ปกป้องด้วย PKCE, การตรวจสอบ redirect URI / CORS อย่างเข้มงวด, โทเค็นการเข้าถึง (access tokens) อายุสั้น และการหมุนเวียนโทเค็นรีเฟรช (refresh-token rotation)

Application name

Application name คือชื่อที่มนุษย์อ่านเข้าใจได้ของแอปพลิเคชัน และจะแสดงในคอนโซลผู้ดูแลระบบ

Application name เป็นองค์ประกอบสำคัญในการจัดการแอปพลิเคชันใน Logto เพราะช่วยให้ผู้ดูแลระบบสามารถระบุและติดตามกิจกรรมของแต่ละแอปพลิเคชันในแพลตฟอร์มได้อย่างง่ายดาย

บันทึก:

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

คำอธิบาย

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

Redirect URIs

Redirect URIs คือรายการของ redirect URIs ที่ถูกต้องซึ่งถูกกำหนดไว้ล่วงหน้าสำหรับแอปพลิเคชัน เมื่อผู้ใช้ลงชื่อเข้าใช้ Logto และพยายามเข้าถึงแอปพลิเคชัน จะถูกเปลี่ยนเส้นทางไปยัง URI ที่อนุญาตซึ่งระบุไว้ในการตั้งค่าแอปพลิเคชัน

รายการ URI ที่อนุญาตนี้ใช้เพื่อตรวจสอบ redirect URI ที่รวมอยู่ในคำขอการอนุญาต (authorization request) ที่แอปพลิเคชันส่งไปยัง Logto ระหว่างกระบวนการยืนยันตัวตน หาก redirect URI ที่ระบุในคำขอการอนุญาตตรงกับ URI ที่อนุญาตในตั้งค่าแอปพลิเคชัน ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยัง URI นั้นหลังจากยืนยันตัวตนสำเร็จ หาก redirect URI ไม่อยู่ในรายการที่อนุญาต ผู้ใช้จะไม่ถูกเปลี่ยนเส้นทางและกระบวนการยืนยันตัวตนจะล้มเหลว

บันทึก:

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

คุณสามารถดูข้อมูลเพิ่มเติมได้ที่ Redirection endpoint

ทำความเข้าใจ Redirect URIs ใน OIDC ด้วย Authorization Code Flow

Post sign-out redirect URIs

Post sign-out redirect URIs คือรายการ URI ที่ถูกต้องซึ่งถูกกำหนดไว้ล่วงหน้าสำหรับแอปพลิเคชันเพื่อเปลี่ยนเส้นทางผู้ใช้หลังจากที่ออกจากระบบ Logto แล้ว

การใช้ Allowed Post Sign-out Redirect URIs สำหรับ Logout เป็นส่วนหนึ่งของข้อกำหนด RP-Initiated (Relying Party Initiated) Logout ใน OIDC ข้อกำหนดนี้ให้วิธีมาตรฐานสำหรับแอปพลิเคชันในการเริ่มคำขอออกจากระบบสำหรับผู้ใช้ ซึ่งรวมถึงการเปลี่ยนเส้นทางผู้ใช้ไปยัง endpoint ที่กำหนดไว้ล่วงหน้าหลังจากออกจากระบบ

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

คุณสามารถดูข้อมูลเพิ่มเติมได้ที่ RP-initiated logout

CORS allowed origins

CORS (Cross-origin resource sharing) allowed origins คือรายการของ origin ที่ได้รับอนุญาตให้แอปพลิเคชันสามารถส่งคำขอไปยังบริการ Logto ได้ Origin ที่ไม่ได้อยู่ในรายการที่อนุญาตจะไม่สามารถส่งคำขอไปยังบริการ Logto ได้

รายการ CORS allowed origins นี้ใช้เพื่อจำกัดการเข้าถึงบริการ Logto จากโดเมนที่ไม่ได้รับอนุญาต และช่วยป้องกันการโจมตีแบบ cross-site request forgery (CSRF) ด้วยการระบุ origin ที่อนุญาตสำหรับแอปพลิเคชันใน Logto บริการจะมั่นใจได้ว่าเฉพาะโดเมนที่ได้รับอนุญาตเท่านั้นที่สามารถส่งคำขอไปยังบริการได้

บันทึก:

รายการ allowed origins ควรมี origin ที่แอปพลิเคชันจะถูกให้บริการ เพื่อให้แน่ใจว่าคำขอจากแอปพลิเคชันจะได้รับอนุญาต ในขณะที่คำขอจาก origin ที่ไม่ได้รับอนุญาตจะถูกบล็อก

OpenID provider configuration endpoint

Endpoint สำหรับ OpenID Connect Discovery

Authorization endpoint

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

คุณสามารถดูข้อมูลเพิ่มเติมได้ที่ Authorization Endpoint

Token endpoint

Token Endpoint เป็นคำศัพท์ของ OIDC เป็น endpoint ของเว็บ API ที่ใช้โดย OIDC client เพื่อขอโทเค็นการเข้าถึง (access token), โทเค็น ID (ID token) หรือโทเค็นรีเฟรช (refresh token) จาก OIDC provider

เมื่อ OIDC client ต้องการขอโทเค็นการเข้าถึงหรือโทเค็น ID จะส่งคำขอไปยัง Token Endpoint พร้อม authorization grant ซึ่งโดยทั่วไปคือ authorization code หรือโทเค็นรีเฟรช (refresh token) Token Endpoint จะตรวจสอบความถูกต้องของ authorization grant และออกโทเค็นการเข้าถึงหรือโทเค็น ID ให้ client หาก grant ถูกต้อง

คุณสามารถดูข้อมูลเพิ่มเติมได้ที่ Token Endpoint

Userinfo endpoint

OpenID Connect UserInfo Endpoint

Always issue refresh token

การใช้งาน: Traditional web, SPA

เมื่อเปิดใช้งาน Logto จะออกโทเค็นรีเฟรช (refresh tokens) เสมอ ไม่ว่าจะมี prompt=consent ในคำขอการยืนยันตัวตนหรือไม่ หรือมี offline_access ในขอบเขต (scopes) หรือไม่ก็ตาม

อย่างไรก็ตาม ไม่แนะนำให้ใช้แนวทางนี้หากไม่จำเป็น (โดยปกติจะใช้สำหรับการผสานรวม OAuth ของบุคคลที่สามบางรายที่ต้องการ refresh token) เพราะไม่สอดคล้องกับ OpenID Connect และอาจทำให้เกิดปัญหาได้

Rotate refresh token

ค่าเริ่มต้น: true

เมื่อเปิดใช้งาน Logto จะออกโทเค็นรีเฟรชใหม่สำหรับคำขอโทเค็นภายใต้เงื่อนไขต่อไปนี้:

  • หากโทเค็นรีเฟรชถูกหมุนเวียน (TTL ถูกขยายโดยการออกโทเค็นใหม่) เป็นเวลาหนึ่งปี; หรือ
  • หากโทเค็นรีเฟรชใกล้หมดอายุ (>=70% ของ TTL เดิมผ่านไปแล้ว); หรือ
  • หาก client เป็น public client เช่น Native application หรือ single page application (SPA)
บันทึก:

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

ทำความเข้าใจการหมุนเวียนโทเค็นรีเฟรช (refresh token rotation)

อายุการใช้งาน (TTL) ของ refresh token (วัน)

การใช้งาน: ไม่ใช่ SPA; ค่าเริ่มต้น: 14 วัน

ระยะเวลาที่ refresh token สามารถใช้ขอโทเค็นการเข้าถึงใหม่ก่อนที่จะหมดอายุและกลายเป็นโมฆะ คำขอโทเค็นจะขยาย TTL ของ refresh token เป็นค่านี้

โดยทั่วไป ค่าที่ต่ำกว่าจะปลอดภัยกว่า

หมายเหตุ: การต่ออายุ TTL ของ refresh token จะไม่สามารถใช้ได้ใน SPA (single page app) ด้วยเหตุผลด้านความปลอดภัย หมายความว่า Logto จะไม่ขยาย TTL ผ่านคำขอโทเค็น เพื่อประสบการณ์ผู้ใช้ที่ดีขึ้น คุณสามารถเปิดใช้งานฟีเจอร์ “Rotate refresh token” เพื่อให้ Logto ออก refresh token ใหม่เมื่อจำเป็น

Backchannel logout URI

Endpoint backchannel logout ของ OpenID Connect ดู Federated sign-out: Back-channel logout สำหรับข้อมูลเพิ่มเติม

ข้อมูลกำหนดเอง

ข้อมูลเพิ่มเติมของแอปพลิเคชันที่ไม่ได้อยู่ในคุณสมบัติที่กำหนดไว้ล่วงหน้า ผู้ใช้สามารถกำหนดฟิลด์ข้อมูลกำหนดเองตามความต้องการเฉพาะ เช่น การตั้งค่าและการกำหนดค่าทางธุรกิจ