ข้ามไปยังเนื้อหา

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

คีย์ API คือโทเค็นการเข้าถึงส่วนบุคคลที่ผูกกับสมาชิกในบัญชีของคุณ

  • สร้างคีย์ใน การตั้งค่า → ปลั๊กอิน → คีย์ API ของ RolChat ซีเคร็ตจะแสดงเพียงครั้งเดียว หลังจากนั้นจะเห็นเฉพาะสิบตัวอักษรแรก และ RolChat เก็บเฉพาะแฮช SHA-256
  • รูปแบบ: rcp_ ตามด้วยไบต์สุ่ม 32 ไบต์ในรูปแบบ base64url รวมประมาณ 45 ตัวอักษร คำนำหน้าทำให้จดจำคีย์ในบันทึกได้และแยกจากโทเค็นเซสชัน
  • ขอบเขต: เลือกจากแค็ตตาล็อกความสามารถที่กำหนดไว้เมื่อสร้างคีย์ คีย์ทำได้ไม่เกินสมาชิกที่สร้างคีย์นั้น: ทุกการเรียกจะตรวจสอบทั้งสองเงื่อนไข คือความสามารถอยู่ในขอบเขตของคีย์และสมาชิกยังมีความสามารถนั้นอยู่ หากจำกัดบทบาทของสมาชิก คีย์ก็จะถูกจำกัดตามไปด้วย
  • อายุ: คีย์ไม่หมดอายุเอง เพิกถอนคีย์ได้จากหน้าโปรไฟล์หรือด้วย DELETE /api/v1/tokens/:id การเพิกถอนมีผลทันที ไม่มีการหมุนเวียนคีย์เดิม: ให้เพิกถอนแล้วสร้างคีย์ใหม่
  • การสร้างและการเพิกถอนถูกบันทึกในบันทึกการตรวจสอบ

ส่งคีย์เป็นโทเค็น bearer - ไม่มีเฮดเดอร์แยกสำหรับคีย์ API:

Terminal window
curl https://api.rolchat.com/api/v1/contacts?limit=20 \
-H "Authorization: Bearer rcp_…" \
-H "X-Account-Id: 7c1d2c6e-…"

คำขอที่ใช้คีย์ API ของปลั๊กอินจำกัดที่ 300 ครั้งต่อนาที

เว็บแอปและ 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: <account uuid>

เซิร์ฟเวอร์ตรวจสอบว่าเฮดเดอร์ตรงกับ claim acc ของโทเค็น (หรือบัญชีของคีย์ API) หากไม่มีเฮดเดอร์จะได้ 400 missing_required_header หากไม่ตรงกันจะได้ 403 account_context_mismatch เฮดเดอร์นี้มีไว้เพื่อไม่ให้บั๊กฝั่งไคลเอนต์หรือโทเค็นที่ถูกส่งซ้ำอ่านข้อมูลของผู้เช่ารายอื่นได้โดยไม่มีใครรู้: การไม่ตรงกันจะถูกปฏิเสธก่อนคิวรีใดๆ ทำงาน และทุกบรรทัดในบันทึกระบุบัญชีได้โดยไม่ต้องถอดรหัสโทเค็น

บุคคลหนึ่งอยู่ได้หลายบริษัท แต่ละบริษัทมีโทเค็นของตัวเอง (มี claim acc ของตัวเอง) วิธีสลับ:

POST /api/v1/auth/swap-company
Authorization: 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