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

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

บทนำ

ใน 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) เพื่อเป็นกำแพงความปลอดภัยส่วนตัว

Application name

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

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

บันทึก:

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

คำอธิบาย

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

Redirect URIs

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

รายการ URIs ที่อนุญาตนี้ใช้เพื่อตรวจสอบ redirect URI ที่รวมอยู่ในคำขอการอนุญาตที่แอปพลิเคชันส่งไปยัง 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 คือรายการของ URIs ที่ถูกต้องซึ่งถูกกำหนดไว้ล่วงหน้าสำหรับแอปพลิเคชันเพื่อเปลี่ยนเส้นทางผู้ใช้หลังจากออกจากระบบ 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 บริการจะมั่นใจได้ว่าเฉพาะโดเมนที่ได้รับอนุญาตเท่านั้นที่สามารถส่งคำขอไปยังบริการได้

บันทึก:

รายการ origin ที่อนุญาตควรประกอบด้วย 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 ต้องการขอรับ access token หรือ ID token จะส่งคำขอไปยัง Token Endpoint พร้อม authorization grant ซึ่งโดยปกติจะเป็น authorization code หรือ refresh token จากนั้น Token Endpoint จะตรวจสอบความถูกต้องของ authorization grant และออก access token หรือ ID token ให้ 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 แลกเปลี่ยนเพื่อขอ access token ใหม่โดยใช้ refresh token แม้ว่าคุณจะสามารถปิดฟีเจอร์นี้สำหรับ public clients ได้ แต่ขอแนะนำอย่างยิ่งให้เปิดใช้งานเพื่อเหตุผลด้านความปลอดภัย

ทำความเข้าใจการหมุนเวียน refresh token

Refresh token time-to-live (TTL) เป็นวัน

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

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

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

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

Backchannel logout URI

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

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

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