การยืนยันตัวตน
คีย์ API (แนะนำสำหรับการเชื่อมต่อ)
หัวข้อที่มีชื่อว่า “คีย์ API (แนะนำสำหรับการเชื่อมต่อ)”คีย์ API คือโทเค็นการเข้าถึงส่วนบุคคลที่ผูกกับสมาชิกในบัญชีของคุณ
- สร้างคีย์ใน การตั้งค่า → ปลั๊กอิน → คีย์ API ของ RolChat ซีเคร็ตจะแสดงเพียงครั้งเดียว หลังจากนั้นจะเห็นเฉพาะสิบตัวอักษรแรก และ RolChat เก็บเฉพาะแฮช SHA-256
- รูปแบบ:
rcp_ตามด้วยไบต์สุ่ม 32 ไบต์ในรูปแบบ base64url รวมประมาณ 45 ตัวอักษร คำนำหน้าทำให้จดจำคีย์ในบันทึกได้และแยกจากโทเค็นเซสชัน - ขอบเขต: เลือกจากแค็ตตาล็อกความสามารถที่กำหนดไว้เมื่อสร้างคีย์ คีย์ทำได้ไม่เกินสมาชิกที่สร้างคีย์นั้น: ทุกการเรียกจะตรวจสอบทั้งสองเงื่อนไข คือความสามารถอยู่ในขอบเขตของคีย์และสมาชิกยังมีความสามารถนั้นอยู่ หากจำกัดบทบาทของสมาชิก คีย์ก็จะถูกจำกัดตามไปด้วย
- อายุ: คีย์ไม่หมดอายุเอง เพิกถอนคีย์ได้จากหน้าโปรไฟล์หรือด้วย
DELETE /api/v1/tokens/:idการเพิกถอนมีผลทันที ไม่มีการหมุนเวียนคีย์เดิม: ให้เพิกถอนแล้วสร้างคีย์ใหม่ - การสร้างและการเพิกถอนถูกบันทึกในบันทึกการตรวจสอบ
ส่งคีย์เป็นโทเค็น bearer - ไม่มีเฮดเดอร์แยกสำหรับคีย์ API:
curl https://api.rolchat.com/api/v1/contacts?limit=20 \ -H "Authorization: Bearer rcp_…" \ -H "X-Account-Id: 7c1d2c6e-…"คำขอที่ใช้คีย์ API ของปลั๊กอินจำกัดที่ 300 ครั้งต่อนาที
เซสชัน JWT
หัวข้อที่มีชื่อว่า “เซสชัน JWT”เว็บแอปและ SDK สำหรับมือถือลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่าน (หรือ Google หรือ Apple) และได้รับโทเค็นหนึ่งคู่
| โทเค็น | อายุ | หมายเหตุ |
|---|---|---|
| โทเค็นการเข้าถึง | 15 นาที | RS256 ตรวจสอบกับ JWKS ที่ /.well-known/jwks.json |
| โทเค็นรีเฟรช | 30 วัน | หมุนเวียนทุกครั้งที่รีเฟรช การใช้โทเค็นที่หมุนเวียนแล้วซ้ำจะเพิกถอนทั้งสาย |
Claims: sub (ผู้ใช้) acc (บัญชี) rl (บทบาท) และสำหรับบทบาทระดับไซต์ sts (ไซต์ที่อนุญาต)
POST /auth/login /auth/refresh /auth/swap-company และ /auth/logout เป็นเอนด์พอยต์เดียวในขั้นตอนการยืนยันตัวตนที่ต้องไม่มีเฮดเดอร์ X-Account-Id ที่อธิบายถัดไป
เฮดเดอร์ X-Account-Id
หัวข้อที่มีชื่อว่า “เฮดเดอร์ X-Account-Id”ทุกคำขอที่ยืนยันตัวตนแล้ว ยกเว้นสี่รายการข้างต้น ต้องระบุบัญชีที่คำขอนั้นดำเนินการ:
X-Account-Id: <account uuid>เซิร์ฟเวอร์ตรวจสอบว่าเฮดเดอร์ตรงกับ claim acc ของโทเค็น (หรือบัญชีของคีย์ API) หากไม่มีเฮดเดอร์จะได้ 400 missing_required_header หากไม่ตรงกันจะได้ 403 account_context_mismatch เฮดเดอร์นี้มีไว้เพื่อไม่ให้บั๊กฝั่งไคลเอนต์หรือโทเค็นที่ถูกส่งซ้ำอ่านข้อมูลของผู้เช่ารายอื่นได้โดยไม่มีใครรู้: การไม่ตรงกันจะถูกปฏิเสธก่อนคิวรีใดๆ ทำงาน และทุกบรรทัดในบันทึกระบุบัญชีได้โดยไม่ต้องถอดรหัสโทเค็น
ผู้ใช้ที่อยู่หลายบริษัท
หัวข้อที่มีชื่อว่า “ผู้ใช้ที่อยู่หลายบริษัท”บุคคลหนึ่งอยู่ได้หลายบริษัท แต่ละบริษัทมีโทเค็นของตัวเอง (มี claim acc ของตัวเอง) วิธีสลับ:
POST /api/v1/auth/swap-companyAuthorization: Bearer <current access token>
{ "account_id": "<target uuid>" }บริษัทปลายทางต้องเป็นหนึ่งใน available_companies ของผู้เรียก (ส่งกลับมาตอนเข้าสู่ระบบ) ไม่เช่นนั้นจะได้ 403 forbidden การตอบกลับคือโทเค็นการเข้าถึงและโทเค็นรีเฟรชคู่ใหม่ที่มีขอบเขตของบริษัทปลายทาง โทเค็นรีเฟรชเดิมถูกเพิกถอน และมีการเขียนเหตุการณ์ตรวจสอบ auth.account.swapped
การยืนยันตัวตนหลายปัจจัย
หัวข้อที่มีชื่อว่า “การยืนยันตัวตนหลายปัจจัย”MFA แบบ TOTP ลงทะเบียนได้รายสมาชิกและบังคับได้รายบัญชี เมื่อเปิดใช้ POST /auth/login จะส่งคำท้าทายกลับมา และเซสชันจะเสร็จสมบูรณ์ด้วย POST /auth/mfa/verify รหัสสำรองออกให้ตอนลงทะเบียน
การป้องกันการลงชื่อเข้าใช้
หัวข้อที่มีชื่อว่า “การป้องกันการลงชื่อเข้าใช้”- เส้นทางการลงชื่อเข้าใช้จำกัด 10 ครั้งต่อ IP ต่อนาที และ 5 ครั้งต่ออีเมลต่อ 15 นาที
- การลงชื่อเข้าใช้ล้มเหลวสิบครั้งจะล็อกอีเมล 30 นาที การตอบกลับมี
code: account_locked - เปิดใช้ reCAPTCHA ได้แยกตามการกระทำ (สมัคร ลงชื่อเข้าใช้ รีเซ็ตรหัสผ่าน) ค่าตั้งต้นสาธารณะให้บริการจาก
GET /api/v1/captcha