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

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

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

ภาพรวม

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

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

คีย์ API

ประเภทคีย์

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

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

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

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

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

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

คีย์จริง (การผลิต)

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

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


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

  1. เข้าสู่ระบบ Omise Dashboard
  2. ไปที่ SettingsKeys
  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) {
// ส่งโทเค็นไปยังเซิร์ฟเวอร์
});

ใช้คีย์ลับสำหรับ:

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

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

ทำไม? คีย์ลับสามารถเข้าถึง 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 การกำหนดเวอร์ชัน →


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

ทดสอบด้วยปลายทางบัญชี

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

# ทดสอบคีย์ลับ
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. ติดตามบัญชีของคุณเพื่อหาการเรียกเก็บเงินที่ไม่ได้รับอนุญาต
  5. ติดต่อ support@omise.co หากคุณเห็นกิจกรรมที่น่าสงสัย
ฉันสามารถสร้างคีย์ใหม่โดยไม่มีเวลาหยุดทำงานได้หรือไม่?

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

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

สิ่งนี้ช่วยให้หมุนเวียนคีย์แบบ zero-downtime

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

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

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

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

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

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


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

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

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

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

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

คีย์สาธารณะทดสอบ:    pkey_test_XXXXXXXXXXXXXXXXXXXX
คีย์สาธารณะจริง: pkey_live_XXXXXXXXXXXXXXXXXXXX
คีย์ลับทดสอบ: skey_test_XXXXXXXXXXXXXXXXXXXX
คีย์ลับจริง: skey_live_XXXXXXXXXXXXXXXXXXXX
คีย์เชื่อมโยง: chain_XXXXXXXXXXXXXXXXXXXX

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


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