การเข้าสู่ระบบโดยไม่มีสิทธิ์ posting

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

สองวิธี

  • มีบัญชีแอป: แอปของคุณมีบัญชี Hive ของตัวเองและขอ scope=login โทเค็นจะระบุแอปของคุณ
  • ไม่มีบัญชีแอป: เว็บไซต์ที่ไม่มีบัญชี Hive ส่งมาเพียง redirect_uri โทเค็นจะไม่ระบุแอปใดเลย เว็บไซต์ของคุณตรวจสอบเอง

ทั้งสองวิธีไม่ต้องขอสิทธิ์จากผู้ใช้หรือจากบัญชีแอปของคุณ บัญชีของผู้ใช้จึงไม่มีอะไรเปลี่ยน Hivesigner ลงนามการเข้าสู่ระบบด้วยคีย์ posting หรือด้วยคีย์ active เมื่ออุปกรณ์ไม่มีคีย์ posting ของบัญชีนั้น

มีบัญชีแอป

  1. ลงทะเบียนแอปของคุณ: สร้างบัญชี Hive ของแอปและใส่รายการ callback ของคุณ ไม่ต้องใช้ไคลเอ็นต์ซีเคร็ตและไม่ต้องให้สิทธิ์แก่ @hivesigner

  2. ส่งผู้ใช้ไปที่

    https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=login&state=STATE
    
  3. ผู้ใช้เห็น «เข้าสู่ระบบ APP» พร้อม ขอบเขต «ดูชื่อผู้ใช้ของบัญชีคุณ» แล้วเลือก เข้าสู่ระบบ

  4. Hivesigner เปลี่ยนเส้นทางไปยัง callback ของคุณ

    REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME
    
  5. เทียบ state แล้วตรวจสอบโทเค็น โทเค็นนี้เป็นชนิด login ที่ระบุแอปของคุณ จึงใช้วิธีใดก็ได้ในสองวิธีนี้

    • เรียก GET /api/me ด้วยโทเค็นนั้น ซึ่งจะตอบด้วยบัญชีใน user และ scope เป็น ["login"] จากนั้นถอดรหัสโทเค็นแล้วตรวจ type กับ app (ถาม API)
    • หรือ ตรวจสอบเอง ด้วย type: 'login' และชื่อแอปของคุณ

โทเค็น login กระจายอะไรไม่ได้ /api/broadcast ปฏิเสธทุกการดำเนินการที่ส่งมาพร้อมโทเค็นนี้

ไม่มีบัญชีแอป

  1. ส่งผู้ใช้ไปยัง URL อนุญาต พร้อม redirect_uri และไม่มี client_id

    https://hivesigner.com/oauth2/authorize?redirect_uri=REDIRECT_URI&state=STATE
    

    callback ต้องเป็น https:// หรือเป็น http:// บนลูปแบ็ก (localhost, 127.0.0.1, [::1]) ไม่มีรายการให้ลงทะเบียน ที่นี่ Hivesigner ไม่สนใจ scope และ response_type คำตอบจะเป็นโทเค็นเข้าสู่ระบบเสมอ

  2. ผู้ใช้เห็น «HOST ต้องการยืนยันชื่อผู้ใช้ Hive ของคุณ» โดย HOST คือโฮสต์ของ callback ของคุณ แล้วเลือก เข้าสู่ระบบ

  3. Hivesigner เปลี่ยนเส้นทางไปยัง callback ของคุณ

    REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME
    
  4. เทียบ state แล้วตรวจสอบโทเค็นด้วยตัวเอง API ไม่รับโทเค็นที่ไม่ระบุแอป เซิร์ฟเวอร์ของคุณจึงต้องตรวจลายเซ็นกับคีย์ของบัญชี ดู ตรวจสอบเอง โดยใช้ type: 'login' และไม่มี app

เมื่อ callback ไม่ใช่ที่อยู่เว็บ หรือเป็น http:// ธรรมดาที่อยู่นอกลูปแบ็ก Hivesigner จะปฏิเสธคำขอและบอกผู้ใช้ว่าเพราะอะไร

ควรใช้แบบไหน

มีบัญชีแอป ไม่มีบัญชีแอป
สิ่งที่ผู้ใช้เห็น ชื่อ รูป และบัญชี Hive ของแอปคุณ เพียงโฮสต์ของเว็บไซต์คุณ
การเตรียมการ บัญชี Hive ที่ใส่รายการ callback ไว้ ไม่ต้องเตรียม
โทเค็นระบุ แอปของคุณ ไม่ระบุแอป
ตรวจสอบโทเค็นด้วย /api/me หรือโค้ดของคุณเอง โค้ดของคุณเอง
สิทธิ์ posting ในภายหลัง ด้วยบัญชีเดิม: ขอ posting แล้ว ให้สิทธิ์แก่ @hivesigner ต้องมีบัญชีแอปก่อน

ใช้บัญชีแอปเมื่อทำได้ ผู้ใช้จะเห็นชื่อและรูปของแอปคุณ เซิร์ฟเวอร์ของคุณปฏิเสธโทเค็นที่สร้างมาเพื่อแอปอื่นได้ และภายหลังคุณย้ายไปใช้สิทธิ์ posting ด้วยบัญชีเดิมได้

ใช้วิธีที่สองเมื่อเว็บไซต์ของคุณไม่มีบัญชี Hive และไม่ต้องการมี

ตรวจสอบการเข้าสู่ระบบอย่างปลอดภัย

  • ผูกคำขอด้วย state สร้างค่าสุ่มสำหรับการเข้าสู่ระบบแต่ละครั้ง เก็บไว้ในเซสชันของผู้ใช้ เทียบที่ callback ของคุณ และใช้เพียงครั้งเดียว ดู ป้องกันคำขอด้วย state
  • ตรวจชนิด รับเฉพาะ signed_message.type ที่เป็น login โค้ดหรือโทเค็นรีเฟรชไม่ใช่การเข้าสู่ระบบ
  • ตรวจแอป เมื่อมีบัญชีแอป signed_message.app ต้องเป็นแอปของคุณ เมื่อไม่มี ต้องไม่มี app เลย
  • ตรวจอายุ คุณตรวจโทเค็นทันทีหลังการเปลี่ยนเส้นทาง จึงควรรับเฉพาะภายในไม่กี่นาทีนับจาก timestamp ของโทเค็น (เช่น 5 นาที เผื่อนาฬิกาคลาดเคลื่อนหนึ่งนาที)
  • ใช้โทเค็นแต่ละอันครั้งเดียว หลังตรวจผ่าน ให้เริ่มเซสชันของคุณเอง (เช่นคุกกี้ httpOnly) แล้วทิ้งโทเค็นของ Hivesigner เก็บบันทึกโทเค็นที่รับไว้จนกว่ามันจะเก่าเกินกว่าจะผ่านการตรวจอายุ และปฏิเสธโทเค็นใดก็ตามที่เห็นซ้ำ
  • อย่าให้โทเค็นตกอยู่ในบันทึก โทเค็นมาถึงในสตริงคำค้นของ callback ของคุณ ดู เก็บโทเค็นให้ปลอดภัย

ตัวอย่าง

เว็บไซต์อย่าง https://hivesearcher.com และ https://openhive.chat ให้ผู้คนเข้าสู่ระบบด้วยบัญชี Hive เพื่อใช้ฟีเจอร์ที่อยู่นอกเชน เช่นการค้นหาและการแชท พวกเขาต้องรู้เพียงว่าคนคนนั้นเป็นใคร ไม่มีอะไรมากกว่านั้น