PHP Integration Guide
คู่มือนี้อธิบายวิธีการเชื่อมต่อแอปพลิเคชันที่เขียนด้วยภาษา **PHP** เข้ากับระบบ BossHub Auth Gateway เพื่อให้ระบบของคุณรองรับการยืนยันตัวตนแบบรวมศูนย์ (SSO) และ MFA ได้อย่างสมบูรณ์แบบ
The Core Implementation
นำฟังก์ชันนี้ไปไว้ในไฟล์ Header หรือ Library กลางของระบบคุณ:
<?php /** * ฟังก์ชันหลักสำหรับจัดการ Authentication ผ่าน BossHub Gateway */ function BossHubAuth($app_id) { session_start(); $gateway = 'https://authentication.bosshub.io'; // 1. ดึง Token จาก URL (ตอน Callback) หรือจาก Session $token = $_REQUEST['token'] ?? $_SESSION['boss_token'] ?? null; // 2. ถ้าไม่มี Token ให้ Redirect ไปหน้า Login if (!$token) { $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? "https" : "http"; $current_url = "$protocol://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $login_url = "$gateway/login?app_id=$app_id&next=" . urlencode($current_url); header("Location: $login_url"); exit; } // 3. Verify Token กับ API (Server-to-Server) $ch = curl_init("$gateway/api/auth/verify_token"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([ 'token' => $token, 'app_id' => $app_id ])); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); $res = curl_exec($ch); $data = json_decode($res, true); curl_close($ch); // 4. ตรวจสอบผลลัพธ์ if ($data && $data['status'] === 'valid') { $_SESSION['boss_token'] = $token; return $data; // สำเร็จ: คืนค่าข้อมูล User } else { session_destroy(); die("Authentication Failed: " . ($data['message'] ?? 'Invalid Token')); } }
How to Use
เพียงเรียกใช้ฟังก์ชันในบรรทัดแรกของไฟล์ที่คุณต้องการป้องกัน (Protected Page) ระบบจะทำการเช็คสิทธิ์และจัดการ Redirect ให้เองโดยอัตโนมัติ
<?php require_once 'bosshub_auth.php'; // เรียกใช้ฟังก์ชันพร้อมระบุ App ID ที่ลงทะเบียนไว้ $user = BossHubAuth('my_app'); // เข้าถึงข้อมูลผู้ใช้ echo "ยินดีต้อนรับคุณ: " . $user['user_id']; echo "UID: " . $user['uid'];
💡 ข้อควรระวังสำหรับทีมโปรแกรมเมอร์
1. การจัดการ Callback
Gateway จะส่ง Token กลับมาทาง URL (Query String) เสมอ ตรวจสอบให้แน่ใจว่า Domain ของคุณอนุญาตให้รับค่า Token ได้ และไม่มี Firewall บล็อก
2. App ID Mismatch
ค่า `$app_id` ที่ส่งไปตอน Verify ต้องตรงกับที่ตั้งค่าไว้ในหน้า Register App เท่านั้น หากไม่ตรง API จะคืนค่า `invalid` เพื่อความปลอดภัย
3. Session Storage
ตัวอย่างนี้ใช้ PHP Session ในการจำค่า Token หากต้องการใช้ข้าม Sub-domain แนะนำให้ตั้งค่า `session.cookie_domain` ให้ถูกต้อง
4. User Synchronization
แนะนำให้ใช้ `uid` ที่ได้จาก BossHub เป็น Primary Key หลักในการเชื่อมโยงข้อมูลผู้ใช้ในฐานข้อมูลเดิมของคุณ