ตั้งค่า OAuth2 Server และ OpenID Connect ล็อกอินข้ามเว็บไซต์

ขอบคุณบทความต้นฉบับ How to Set Up Drupal Authentication Using OAuth2 and OpenID Connect ที่เผยแพร่เมื่อปี 2021

ตั้งค่า OAuth2 Server และ OpenID Connect เพื่อใช้ล็อกอินข้ามเว็บ

สำหรับบทความนี้ จะสร้างเว็บไซต์ Drupal 10 ขึ้นมา 2 เว็บ เพื่อเป็น OAuth2 Server และเป็น OpenID Connect ให้เชื่อมกัน

ในการสร้าง Drupal 10 แบบเร็วๆ ใช้คำสั่ง composer

composer create-project drupal/recommended-project:10.4.2 drupal
cd drupal && php -d memory_limit=256M web/core/scripts/drupal quick-start standard

เมื่อได้เว็บไซต์ Drupal 10 ทั้ง 2 เว็บ เรียบร้อยแล้ว ก็มาเริ่มตั้งค่าต่างๆ ดังนี้

เว็บหลัก (Server)

ให้ติดตั้งโมดูล OAuth2 Server ด้วยคำสั่ง composer

composer require drupal/oauth2_server

และเปิดใช้โมดูลด้วยคำสั่ง drush

drush en oauth2_server -y

ไปที่ตั้งค่า OAuth2 servers หน้าเพจ /admin/structure/oauth2-servers

คลิก + Add Server

กำหนดชื่อ Server name และเลือก Use OpenID Connect

พักเว็บหลัก ไว้ตรงนี้ก่อน

เว็บลูกข่าย (Client)

ให้ติดตั้งโมดูล OpenID Connect ด้วยคำสั่ง composer

composer require drupal/openid_connect

และเปิดใช้โมดูลด้วยคำสั่ง drush

drush en openid_connect -y

ไปที่ตั้งค่า OpenID Connect หน้าเพจ /admin/config/services/openid-connect

ในการล็อกอินข้ามเว็บไซต์ ให้เลือกเป็น Generic

เมื่อเลือก Generic จะมีแบบฟอร์มให้กำหนดข้อมูลของเว็บลูกข่าย (Client)

  • Client ID
  • Client secret (เหมือนเป็นรหัสผ่านสำหรับการเชื่อมต่อ)
  • Authorization endpoint แก้ไข URL เว็บหลัก (Server) ให้ถูกต้อง
  • Token endpoint
  • Userinfo endpoint

และด้านล่าง กำหนดให้ปุ่มล็อกอิน แทนฟอร์มการล็อกอินของเว็บ

หากต้องการบังคับให้มีการใช้งาน OAuth2 ล็อกอินเท่านั้น ให้ปิดการลงทะเบียนของเว็บลูกค่าย (Client) ไว้เลย โดยเข้าไปที่ Configuration > People > Account settings กำหนดให้เฉพาะ Admin เท่านั้นที่สามารถสร้างบัญชีใหม่

หน้าตาเพจล็อกอินก็จะประมาณนี้

จบการตั้งค่า ในเว็บลูกข่าย (Client)

กลับมาที่เว็บหลัก (Server) อีกครั้ง

ให้แก้ไขเพิ่มรายละเอียดของ OAuth2 Server ที่กำหนดเอาไว้

เลือกหัวข้อ Clients และเพิ่ม + Add client

ให้ใส่รายละเอียดจากที่กรอกไว้ในเว็บลูกข่าย (Client)

  • Label
  • Client ID (ที่กำหนดไว้แล้ว)
  • Client secret (ที่กำหนดไว้แล้ว)
  • Redirect URIs ที่ได้จากเว็บลูกข่าย (Client)

และก่อนจบการตั้งค่า ให้ไปกำหนดสิทธิ People > Permissions

ให้ anonymous user และ authenticated user สามารถเข้าถึงสิทธิ Use OAuth2 Server for authorization

การส่งความคิดเห็น ถือว่าคุณยอมรับ ข้อกำหนดการใช้งาน และ นโยบายความเป็นส่วนตัว ของเรา