B

BossHub PHP SDK Guide

← กลับหน้าหลัก

PHP Integration Guide

คู่มือนี้อธิบายวิธีการเชื่อมต่อแอปพลิเคชันที่เขียนด้วยภาษา **PHP** เข้ากับระบบ BossHub Auth Gateway เพื่อให้ระบบของคุณรองรับการยืนยันตัวตนแบบรวมศูนย์ (SSO) และ MFA ได้อย่างสมบูรณ์แบบ

01.

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'));
    }
}
02.

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 หลักในการเชื่อมโยงข้อมูลผู้ใช้ในฐานข้อมูลเดิมของคุณ