• oidc
  • wordpress

การผสานรวมกับ WordPress สำหรับการอนุญาต

ส่วนที่สองของซีรีส์เกี่ยวกับการผสานรวม Logto กับ WordPress โดยเน้นที่การอนุญาต

Sijie
Sijie
Developer

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

เราจะสร้างฟังก์ชันการเชื่อมโยงบทบาทที่กำหนดบทบาทของ WordPress ให้แก่ผู้ใช้โดยอัตโนมัติจากบทบาทที่ได้รับจาก Logto RBAC (การควบคุมการเข้าถึงตามบทบาท)

การทำความเข้าใจบทบาทผู้ใช้ใน WordPress

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

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

วิธีแก้ไขปัญหา: การเชื่อมโยงบทบาทที่กำหนดเอง

Logto ใช้การควบคุมการเข้าถึงตามบทบาท (RBAC) เป็นโมเดลการอนุญาต โดยใช้ "ขอบเขต" เป็นหน่วยที่เล็กที่สุดของการอนุญาต ขอบเขตเหล่านี้กำหนดการกระทำเฉพาะที่ผู้ใช้ที่ผ่านการยืนยันตนสามารถกระทำได้ภายในแอปพลิเคชัน อย่างไรก็ตาม WordPress ทำงานบนหลักการที่แตกต่างกันสำหรับการจัดการการอนุญาตผู้ใช้ โดยอาศัยบทบาทที่กำหนดไว้ล่วงหน้าเพื่อบรรจุรวมความสามารถต่าง ๆ

ด้วยความแตกต่างพื้นฐานนี้ เราเสนอให้สร้างบทบาทพิเศษภายใน Logto ที่สอดคล้องกับบทบาทที่กำหนดใน WordPress แม้บทบาทเหล่านี้อาจไม่มีขอบเขตอยู่ พวกเขาเพียงแต่ใช้เป็นการอ้างอิงเพื่อเชื่อมโยงผู้ใช้กับบทบาทใน WordPress

สิ่งที่ต้องมี

ก่อนดำเนินการต่อ ให้คุณตรวจสอบว่ามีสิ่งต่อไปนี้:

  • เสร็จสิ้น บทความก่อนหน้า เกี่ยวกับการผสานรวม Logto กับ WordPress สำหรับการยืนยันตัวตน ซึ่งรวมถึง:
    • เว็บไซต์ WordPress ที่มีการเข้าถึงผู้ดูแลระบบ
    • บัญชี Logto ที่มีการตั้งค่าแอปพลิเคชันสำหรับเว็บไซต์ WordPress ของคุณ
    • ปลั๊กอิน OpenID Connect Generic ที่ติดตั้งและกำหนดค่าในเว็บไซต์ WordPress ของคุณ
  • การตั้งค่าบทบาทใน Logto ที่สอดคล้องกับบทบาทใน WordPress ตัวอย่างเช่น หากคุณมีบทบาท 'editor' ใน WordPress ให้สร้างบทบาท 'group:editors' ใน Logto

การดำเนินการเชื่อมโยงบทบาทด้วยโค้ดที่กำหนดเอง

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

ขั้นตอนที่ 1: เข้าถึงไฟล์ functions.php ของธีมของคุณ

เปิดไฟล์ functions.php ของธีมของคุณ คุณสามารถเข้าถึงไฟล์นี้ได้ผ่านแผงผู้ดูแลระบบ WordPress โดยไปที่ลักษณะ > ตัวแก้ไขธีมและเลือก functions.php จากรายการไฟล์ทางด้านขวามือ หรือในซอร์สโค้ด ไปที่ไดเรกทอรีธีม WordPress ของคุณและค้นหาไฟล์ functions.php ไฟล์นี้ช่วยให้คุณเพิ่มฟังก์ชัน PHP ที่กำหนดเองที่ขยายความสามารถของเว็บไซต์ WordPress ของคุณ

ขั้นตอนที่ 2: เขียนฟังก์ชันการเชื่อมโยงบทบาท

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

ขั้นตอนที่ 3: ทำความเข้าใจโค้ดและการปรับแต่ง

  • ฟังก์ชัน logto_handler: ฟังก์ชันนี้รับสองพารามิเตอร์: $user_login (ชื่อผู้ใช้) และ $user (วัตถุผู้ใช้) มันดึงบทบาทจาก Logto ซึ่งเก็บอยู่ในข้อมูลเมตาผู้ใช้ในชื่อ openid-connect-generic-last-user-claim เชื่อมโยงบทบาทนี้กับบทบาท WordPress ที่สอดคล้องกันและกำหนดให้กับผู้ใช้

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

ตัวอย่างด้านบนกำหนดบทบาท 'editor' ให้กับผู้ใช้ที่ผ่านการรับรองโดย Logto ด้วยชื่อบทบาท group:editors อย่างไรก็ตาม ในสถานการณ์จริง คุณอาจจำเป็นต้องดำเนินการเชื่อมโยงบทบาทประเภทอื่นๆ มากขึ้น

คุณสามารถค้นหารายชื่อบทบาทใน WordPress และความสามารถของพวกเขา ที่นี่

ขั้นตอนที่ 4: ทดสอบการตั้งค่าของคุณ

ขณะนี้ ลองทดสอบฟังก์ชันการเชื่อมโยงบทบาทโดยการเข้าสู่ระบบด้วยผู้ใช้ที่มีบทบาท group:editors ใน Logto หลังจากเข้าสู่ระบบ ตรวจสอบบทบาทของผู้ใช้ใน WordPress เพื่อให้แน่ใจว่าการเชื่อมโยงทำงานได้ถูกต้อง

สรุป

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