การเชื่อมต่อ Backend
AM เปิดเผย public key ผ่าน JWKS และคอนฟิกผ่าน OIDC discovery ซึ่งเป็นโปรโตคอลมาตรฐานที่ไลบรารี JWT ส่วนใหญ่รองรับ
ตรวจสอบโทเคนแบบ local เชื่อถือ claims และอนุญาตคำขอได้ทันที
ขั้นตอนการตรวจสอบโทเคน
Endpoints
| Endpoint | วัตถุประสงค์ |
|---|---|
/.well-known/jwks.json |
กุญแจสาธารณะสำหรับลงลายเซ็น |
/.well-known/openid-configuration |
เอกสาร OIDC discovery |
/oauth2/introspect |
ตรวจสอบ refresh token |
JWKS
ดึง public key เพื่อใช้ตรวจสอบแบบ local:
GET /.well-known/jwks.json
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "key_...",
"alg": "RS256",
"n": "0vx7agoebG...",
"e": "AQAB"
}
]
}
ระหว่างการหมุนคีย์อาจมีหลายคีย์พร้อมกัน ให้จับคู่ด้วย claim kid ใน JWT header
OIDC Discovery
ตั้งค่าไคลเอนต์อัตโนมัติจาก discovery document:
GET /.well-known/openid-configuration
จะส่งคืน endpoints, algorithms ที่รองรับ และความสามารถต่าง ๆ ตามสเปก OpenID Connect Discovery
JWT Claims
โทเคนที่ตรวจสอบแล้วจะมีข้อมูล:
| Claim | คำอธิบาย |
|---|---|
iss |
URL ของผู้ออกโทเคน |
sub |
Subject (user ID หรือ client ID) |
aud |
กลุ่มเป้าหมายของโทเคน |
exp |
เวลาหมดอายุ (Unix timestamp) |
iat |
เวลาออกโทเคน (Unix timestamp) |
scope |
สิทธิ์ที่ได้รับ |
cid |
Client ID |
app |
Application ID |
acc |
Current account ID |
uid |
User ID (เมื่อเป็นผู้ใช้ที่ auth แล้ว) |
role |
บทบาทในบัญชีปัจจุบัน |
แคช
- แคชผลลัพธ์ JWKS (ใช้ ETag/If-None-Match)
- รีเฟรชเมื่อการตรวจสอบลายเซ็นล้มเหลว (กรณีหมุนคีย์)
- TTL ทั่วไป: 1 ชั่วโมง
Token Introspection
สำหรับ refresh token หรือกรณีที่ต้องการการตรวจสอบแบบ authoritative:
POST /oauth2/introspect
Content-Type: application/x-www-form-urlencoded
token=...&client_id=...&client_secret=...
ผลลัพธ์จะมี active: true/false และ claims ของโทเคน ส่วน access token เป็น JWT จึงควรตรวจสอบแบบ local ผ่าน JWKS เมื่อเป็นไปได้
ที่เกี่ยวข้อง
- OAuth - การออกโทเคน
- ไคลเอนต์ - การตั้งค่าไคลเอนต์
- Client Key - คีย์สำหรับลงลายเซ็น