ข้ามไปยังเนื้อหาหลัก
เวอร์ชัน: ล่าสุด

การยืนยันตัวตน

Omise ใช้การยืนยันตัวตน HTTP Basic ด้วยคีย์ API มาเรียนรู้วิธีการยืนยันตัวตนคำขอของคุณอย่างปลอดภัยและเลือกคีย์ที่เหมาะสมสำหรับแต่ละการดำเนินการ

ภาพรวม

คำขอ Omise API ทั้งหมดจำเป็นต้องได้รับการยืนยันตัวตนโดยใช้คีย์ API ใดคีย์หนึ่งของคุณ Omise มีคีย์หลายประเภทสำหรับวัตถุประสงค์ที่แตกต่างกัน โดยแต่ละคีย์จะมีสิทธิ์การเข้าถึงและข้อกำหนดด้านความปลอดภัยที่เฉพาะเจาะจง

เริ่มต้นอย่างรวดเร็ว
  • คีย์สาธารณะ (pkey_*) → โค้ดฝั่งไคลเอนต์ สร้างโทเค็น/แหล่งที่มาเท่านั้น
  • คีย์ลับ (skey_*) → โค้ดฝั่งเซิร์ฟเวอร์ เข้าถึง API ได้อย่างสมบูรณ์
  • ห้าม เปิดเผยคีย์ลับของคุณในโค้ดฝั่งไคลเอนต์หรือที่เก็บข้อมูลสาธารณะโดยเด็ดขาด

คีย์ API

ประเภทของคีย์

Omise มีคีย์ API สามประเภท:

ประเภทคีย์รูปแบบใช้สำหรับใช้ที่ไหนระดับการเข้าถึง
คีย์สาธารณะpkey_test_* / pkey_live_*การทำโทเค็นบัตร การสร้างแหล่งที่มาฝั่งไคลเอนต์ (เบราว์เซอร์ แอปมือถือ)จำกัด - สามารถสร้างโทเค็นและแหล่งที่มาเท่านั้น
คีย์ลับskey_test_* / skey_live_*การเรียกเก็บเงิน ลูกค้า การคืนเงิน ทุกการดำเนินการฝั่งเซิร์ฟเวอร์เท่านั้นเข้าถึง API ได้อย่างสมบูรณ์
Chain Keychain_*การดำเนินการของบัญชีหลักต่อผู้ขายย่อยฝั่งเซิร์ฟเวอร์เท่านั้นการจัดการผู้ขายย่อย

คีย์ทดสอบ vs คีย์จริง

คีย์แต่ละประเภทมีเวอร์ชันทดสอบและเวอร์ชันจริง

คีย์ทดสอบ (สำหรับการพัฒนา)

  • มี _test_ ในสตริงคีย์
  • ตัวอย่าง: skey_test_5xuy4w91xqz7d1w9u0t
  • ✅ ปลอดภัยสำหรับการพัฒนาและการทดสอบ
  • ✅ ยอมรับหมายเลขบัตรทดสอบ
  • ✅ ไม่ประมวลผลเงินจริง
  • ✅ ทริกเกอร์ Webhook ทดสอบ

คีย์จริง (สำหรับการใช้งานจริง)

  • ไม่มี _test_
  • ตัวอย่าง: skey_live_5xuy4w91xqz7d1w9u0t
  • ⚠️ ประมวลผลการชำระเงินจริง
  • ⚠️ เรียกเก็บเงินจากบัตรจริง
  • ⚠️ จำเป็นต้องเก็บรักษาอย่างปลอดภัย
สำคัญต่อความปลอดภัย

อย่า commit คีย์จริงลงใน version control ให้ใช้ตัวแปรสภาพแวดล้อมและระบบจัดการข้อมูลลับที่ปลอดภัย


การค้นหาคีย์ API ของคุณ

  1. เข้าสู่ระบบ Omise Dashboard
  2. ไปที่ การตั้งค่าคีย์
  3. คัดลอกคีย์ทดสอบของคุณสำหรับการพัฒนา
  4. คัดลอกคีย์จริงของคุณเมื่อพร้อมสำหรับการใช้งานจริง

คุณสามารถสร้างคีย์ใหม่และเพิกถอนคีย์ที่ถูกบุกรุกได้จากหน้านี้


การยืนยันตัวตนทำงานอย่างไร

Omise ใช้ การยืนยันตัวตน HTTP Basic

  • ชื่อผู้ใช้: คีย์ API
  • รหัสผ่าน: เว้นว่างไว้ (สตริงว่าง)

คีย์ API จะถูกส่งใน header Authorization เป็นสตริงที่เข้ารหัส Base64

Authorization: Basic <base64(api_key:)>
สังเกตเครื่องหมายโคลอน

แม้ว่ารหัสผ่านจะเป็นค่าว่าง คุณต้องใส่เครื่องหมายโคลอน (:) หลังคีย์ API เมื่อทำการเข้ารหัส


ตัวอย่างการยืนยันตัวตน

การใช้ cURL

# ใช้คีย์ลับ
curl https://api.omise.co/account \
-u skey_test_5xuy4w91xqz7d1w9u0t:

# ใช้คีย์สาธารณะ
curl https://vault.omise.co/tokens \
-X POST \
-u pkey_test_5xuy4w91xqz7d1w9u0t: \
-d "card[name]=John Doe" \
-d "card[number]=4242424242424242" \
-d "card[expiration_month]=12" \
-d "card[expiration_year]=2025" \
-d "card[security_code]=123"

การใช้ Ruby

require 'omise'

# ตั้งค่าคีย์ลับ
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'

# ทำคำขอที่ผ่านการยืนยันตัวตน
account = Omise::Account.retrieve

# ใช้คีย์สาธารณะสำหรับโทเค็น
Omise.vault_api_key = 'pkey_test_5xuy4w91xqz7d1w9u0t'
token = Omise::Token.create({
card: {
name: 'John Doe',
number: '4242424242424242',
expiration_month: 12,
expiration_year: 2025,
security_code: '123'
}
})

การใช้ Python

import omise

# ตั้งค่าคีย์ลับ
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'

# ทำคำขอที่ผ่านการยืนยันตัวตน
account = omise.Account.retrieve()

# ใช้คีย์สาธารณะสำหรับโทเค็น
omise.api_public = 'pkey_test_5xuy4w91xqz7d1w9u0t'
token = omise.Token.create(
name='John Doe',
number='4242424242424242',
expiration_month=12,
expiration_year=2025,
security_code='123'
)

การใช้ PHP

<?php
require_once 'vendor/autoload.php';

// ตั้งค่าคีย์ลับ
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
define('OMISE_PUBLIC_KEY', 'pkey_test_5xuy4w91xqz7d1w9u0t');

// ทำคำขอที่ผ่านการยืนยันตัวตน
$account = OmiseAccount::retrieve();

// ใช้คีย์สาธารณะสำหรับโทเค็น
$token = OmiseToken::create(array(
'card' => array(
'name' => 'John Doe',
'number' => '4242424242424242',
'expiration_month' => 12,
'expiration_year' => 2025,
'security_code' => '123'
)
));

การใช้ Node.js

const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t',
publicKey: 'pkey_test_5xuy4w91xqz7d1w9u0t'
});

// ทำคำขอที่ผ่านการยืนยันตัวตน
const account = await omise.account.retrieve();

// ใช้คีย์สาธารณะสำหรับโทเค็น
const token = await omise.tokens.create({
card: {
name: 'John Doe',
number: '4242424242424242',
expiration_month: 12,
expiration_year: 2025,
security_code: '123'
}
});

การใช้ Go

package main

import (
"github.com/omise/omise-go"
"github.com/omise/omise-go/operations"
)

func main() {
client, _ := omise.NewClient(
"pkey_test_5xuy4w91xqz7d1w9u0t",
"skey_test_5xuy4w91xqz7d1w9u0t",
)

// ทำคำขอที่ผ่านการยืนยันตัวตน
account, _ := client.Account()

// ใช้คีย์สาธารณะสำหรับโทเค็น
token, _ := client.CreateToken(&operations.CreateToken{
Name: "John Doe",
Number: "4242424242424242",
ExpirationMonth: 12,
ExpirationYear: 2025,
SecurityCode: "123",
})
}

การใช้คีย์ใด

ใช้คีย์สาธารณะเมื่อ:

การดำเนินการฝั่งไคลเอนต์ (เบราว์เซอร์ แอปมือถือ)

  • สร้างโทเค็นจากข้อมูลบัตร
  • สร้างแหล่งที่มาสำหรับวิธีการชำระเงินทางเลือก
  • การดำเนินการทั้งหมดที่จัดการข้อมูลบัตรที่ละเอียดอ่อน

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

// ✅ ปลอดภัย - คีย์สาธารณะใน JavaScript ฝั่งไคลเอนต์
Omise.setPublicKey('pkey_test_5xuy4w91xqz7d1w9u0t');
Omise.createToken('card', cardData, function(status, response) {
// ส่งโทเค็นไปยังเซิร์ฟเวอร์
});

ใช้คีย์ลับเมื่อ:

การดำเนินการฝั่งเซิร์ฟเวอร์เท่านั้น

  • การสร้าง Charge
  • การจัดการลูกค้า
  • การประมวลผลการคืนเงิน
  • การสร้างการโอนเงิน
  • การเข้าถึงข้อมูลบัญชี
  • การดำเนินการทั้งหมดที่เกี่ยวข้องกับเงินหรือข้อมูลที่ละเอียดอ่อน

เหตุผล: คีย์ลับมีสิทธิ์เข้าถึง API อย่างสมบูรณ์ และต้องไม่ถูกเปิดเผยโดยเด็ดขาด

# ✅ ปลอดภัย - คีย์ลับบนเซิร์ฟเวอร์เท่านั้น
Omise.api_key = ENV['OMISE_SECRET_KEY']
charge = Omise::Charge.create({
amount: 100000,
currency: 'thb',
card: params[:omise_token]
})

❌ อย่าทำสิ่งนี้โดยเด็ดขาด:

<!-- ❌ อันตราย - คีย์ลับถูกเปิดเผยใน HTML -->
<script>
const secretKey = 'skey_live_5xuy4w91xqz7d1w9u0t';
</script>
// ❌ อันตราย - คีย์ลับในโค้ดฝั่งไคลเอนต์
fetch('https://api.omise.co/charges', {
headers: {
'Authorization': 'Basic ' + btoa('skey_live_...:')
}
});

แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย

1. เก็บคีย์อย่างปลอดภัย

✅ ดี: ตัวแปรสภาพแวดล้อม

# ไฟล์ .env (อย่า commit ลง git)
OMISE_PUBLIC_KEY=pkey_test_5xuy4w91xqz7d1w9u0t
OMISE_SECRET_KEY=skey_test_5xuy4w91xqz7d1w9u0t
# เข้าถึงในโค้ด
Omise.api_key = ENV['OMISE_SECRET_KEY']

✅ ดี: ระบบจัดการข้อมูลลับ

  • AWS Secrets Manager
  • Google Cloud Secret Manager
  • Azure Key Vault
  • HashiCorp Vault

❌ ไม่ดี: คีย์ที่ฮาร์ดโค้ด

# ❌ อย่าฮาร์ดโค้ดคีย์
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'

2. แยกการทดสอบและการใช้งานจริง

# สภาพแวดล้อมการพัฒนา
OMISE_SECRET_KEY=skey_test_...

# สภาพแวดล้อมการใช้งานจริง
OMISE_SECRET_KEY=skey_live_...

3. หมุนเวียนคีย์เป็นประจำ

หากคุณสงสัยว่าคีย์ถูกบุกรุก:

  1. สร้างคีย์ใหม่ใน Dashboard
  2. อัปเดตแอปพลิเคชันของคุณด้วยคีย์ใหม่
  3. ทดสอบอย่างละเอียด
  4. เพิกถอนคีย์เก่า

4. จำกัดสิทธิ์ของคีย์

แม้ว่า Omise จะยังไม่รองรับการกำหนดสิทธิ์คีย์แบบละเอียด ให้ปฏิบัติตามหลักการสิทธิ์ขั้นต่ำ:

  • ใช้คีย์สาธารณะเมื่อใดก็ตามที่เป็นไปได้
  • เก็บคีย์ลับไว้บนเซิร์ฟเวอร์ที่ปลอดภัยเท่านั้น
  • อย่าแชร์คีย์ระหว่างสมาชิกในทีม (แต่ละคนควรมีบัญชี Dashboard ของตนเอง)

5. ตรวจสอบการใช้งานคีย์

  • ตรวจสอบบันทึก Dashboard เป็นประจำ
  • ตั้งค่าการแจ้งเตือนสำหรับกิจกรรมผิดปกติ
  • ติดตามความพยายามในการยืนยันตัวตนที่ล้มเหลว

ข้อผิดพลาดในการยืนยันตัวตน

401 ไม่ได้รับการยืนยันตัวตน

สาเหตุ: คีย์ API ไม่ถูกต้องหรือหายไป

{
"object": "error",
"code": "authentication_failure",
"message": "authentication failed"
}

วิธีแก้ไข:

  • ✅ ตรวจสอบว่าคีย์ API ของคุณถูกต้อง
  • ✅ ตรวจสอบว่าคีย์ไม่ถูกเพิกถอน
  • ✅ ยืนยันว่าคุณใช้คีย์ที่เหมาะสมสำหรับการดำเนินการนี้
  • ✅ ตรวจสอบช่องว่างหรืออักขระเพิ่มเติมในคีย์

403 Forbidden

สาเหตุ: คีย์ถูกต้องแต่ไม่มีสิทธิ์สำหรับการดำเนินการนี้

{
"object": "error",
"code": "forbidden",
"message": "key has insufficient permissions"
}

วิธีแก้ไข:

  • ✅ ใช้คีย์ลับแทนคีย์สาธารณะ
  • ✅ ตรวจสอบว่าบัญชีของคุณมีสิทธิ์เข้าถึงคุณสมบัตินี้
  • ✅ ยืนยันว่าคีย์ไม่ถูกจำกัด

การกำหนดเวอร์ชัน API

ระบุเวอร์ชัน API ในคำขอโดยใช้ header Omise-Version

curl https://api.omise.co/charges \
-u skey_test_5xuy4w91xqz7d1w9u0t: \
-H "Omise-Version: 2019-05-29"

หากไม่ระบุ คำขอจะใช้เวอร์ชัน API เริ่มต้นของบัญชีของคุณ (ตั้งค่าใน Dashboard)

เรียนรู้เพิ่มเติมเกี่ยวกับการกำหนดเวอร์ชัน API →


การทดสอบการยืนยันตัวตน

ทดสอบด้วย Account Endpoint

วิธีที่ง่ายที่สุดในการทดสอบการยืนยันตัวตน:

# ทดสอบคีย์ลับ
curl https://api.omise.co/account \
-u skey_test_5xuy4w91xqz7d1w9u0t:

# ทดสอบคีย์สาธารณะ (ควรล้มเหลว - คีย์สาธารณะไม่สามารถเข้าถึง /account)
curl https://api.omise.co/account \
-u pkey_test_5xuy4w91xqz7d1w9u0t:

การตอบกลับที่คาดหวัง (คีย์ลับ):

{
"object": "account",
"id": "acct_5xuy4w91xqz7d1w9u0t",
"email": "merchant@example.com",
"created_at": "2025-01-01T00:00:00Z",
...
}

การตอบกลับที่คาดหวัง (คีย์สาธารณะ):

{
"object": "error",
"code": "authentication_failure",
"message": "authentication failed"
}

คำถามที่พบบ่อย

ฉันสามารถใช้คีย์เดียวกันสำหรับหลายแอปพลิเคชันได้หรือไม่?

ได้ แต่ไม่แนะนำสำหรับการใช้งานจริง แม้ว่าทางเทคนิคจะเป็นไปได้ แต่การใช้คีย์แยกสำหรับแอปพลิเคชันต่างๆ จะช่วยให้:

  • ความปลอดภัย (เพิกถอนคีย์หนึ่งโดยไม่กระทบต่ออีกคีย์)
  • การติดตาม (ติดตามการใช้งานต่อแอปพลิเคชัน)
  • การดีบัก (ระบุแอปที่มีปัญหา)

พิจารณาใช้บัญชีผู้ขายย่อยสำหรับแอปพลิเคชันที่แยกจากกันโดยสมบูรณ์

จะเกิดอะไรขึ้นหากคีย์ลับของฉันถูกบุกรุก?
  1. สร้างคีย์ลับใหม่ใน Dashboard ทันที
  2. อัปเดตแอปพลิเคชันของคุณด้วยคีย์ใหม่
  3. เพิกถอนคีย์ที่ถูกบุกรุก
  4. ตรวจสอบบัญชีของคุณเพื่อหา Charge ที่ไม่ได้รับอนุญาต
  5. ติดต่อ support@omise.co หากคุณเห็นกิจกรรมที่น่าสงสัย
ฉันสามารถสร้างคีย์ใหม่โดยไม่มี Downtime ได้หรือไม่?

ได้! Omise อนุญาตให้คุณมีหลายคีย์ที่ใช้งานได้พร้อมกัน:

  1. สร้างคีย์ใหม่
  2. Deploy แอปพลิเคชันของคุณด้วยคีย์ใหม่
  3. ยืนยันว่าคีย์ใหม่ใช้งานได้
  4. เพิกถอนคีย์เก่า

วิธีนี้ช่วยให้คุณหมุนเวียนคีย์โดยไม่มี Downtime

คีย์ API หมดอายุหรือไม่?

ไม่ คีย์ API ของ Omise ไม่หมดอายุโดยอัตโนมัติ อย่างไรก็ตาม คุณควร:

  • หมุนเวียนคีย์เป็นประจำ (ทุก 6-12 เดือน)
  • เพิกถอนคีย์ที่ไม่ได้ใช้
  • สร้างคีย์ใหม่หลังจากสมาชิกในทีมลาออก
ฉันสามารถจำกัดสิทธิ์ของคีย์ API ได้หรือไม่?

ปัจจุบัน Omise มีระดับสิทธิ์สองระดับ:

  • คีย์สาธารณะ - จำกัดการสร้างโทเค็น/แหล่งที่มา
  • คีย์ลับ - เข้าถึง API อย่างสมบูรณ์

การควบคุมสิทธิ์แบบละเอียดยังไม่มี ใช้บัญชีผู้ขายย่อยสำหรับการแยกส่วน


การอ้างอิงอย่างรวดเร็ว

รายการตรวจสอบการยืนยันตัวตน

ก่อนเริ่มใช้งานจริง ให้ยืนยัน:

  • คีย์ลับถูกเก็บในตัวแปรสภาพแวดล้อม
  • คีย์สาธารณะถูกใช้สำหรับการสร้างโทเค็นฝั่งไคลเอนต์
  • ไม่มีคีย์ที่ฮาร์ดโค้ดในโค้ดแอปพลิเคชัน
  • ไม่มีคีย์ที่ commit ลงใน version control
  • คีย์ทดสอบถูกใช้ใน development/staging
  • คีย์จริงถูกใช้ในการใช้งานจริงเท่านั้น
  • คีย์ได้รับการปกป้องด้วยสิทธิ์ไฟล์ที่เหมาะสม
  • สมาชิกในทีมใช้บัญชี Dashboard แยกกัน
  • มีแผนการหมุนเวียนคีย์
  • มีการตั้งค่าการติดตามสำหรับความล้มเหลวในการยืนยันตัวตน

การอ้างอิงรูปแบบคีย์

Public Test:    pkey_test_XXXXXXXXXXXXXXXXXXXX
Public Live: pkey_live_XXXXXXXXXXXXXXXXXXXX
Secret Test: skey_test_XXXXXXXXXXXXXXXXXXXX
Secret Live: skey_live_XXXXXXXXXXXXXXXXXXXX
Chain: chain_XXXXXXXXXXXXXXXXXXXX

ทรัพยากรที่เกี่ยวข้อง


ถัดไป: เรียนรู้เกี่ยวกับการจัดการข้อผิดพลาดเพื่อจัดการความล้มเหลวของ API อย่างเหมาะสม