การเข้าสู่ระบบโดยไม่มีสิทธิ์ posting
บางแอปต้องการรู้เพียงว่าคนคนนั้นเป็นใครบน Hive แอปเหล่านั้นไม่เคยโพสต์ โหวต หรือกระจายอะไรแทนเขาเลย Hivesigner ให้ผู้คนเข้าสู่ระบบแอปแบบนั้นได้โดยไม่ต้องใช้สิทธิ์ posting ใด ๆ ผู้ใช้พิสูจน์ว่าเขาควบคุมบัญชี Hive และแอปของคุณก็ได้รู้ชื่อบัญชีนั้น หน้านี้แสดงสองวิธีและวิธีตรวจสอบผลลัพธ์อย่างปลอดภัย
สองวิธี
- มีบัญชีแอป: แอปของคุณมีบัญชี Hive ของตัวเองและขอ
scope=loginโทเค็นจะระบุแอปของคุณ - ไม่มีบัญชีแอป: เว็บไซต์ที่ไม่มีบัญชี Hive ส่งมาเพียง
redirect_uriโทเค็นจะไม่ระบุแอปใดเลย เว็บไซต์ของคุณตรวจสอบเอง
ทั้งสองวิธีไม่ต้องขอสิทธิ์จากผู้ใช้หรือจากบัญชีแอปของคุณ บัญชีของผู้ใช้จึงไม่มีอะไรเปลี่ยน Hivesigner ลงนามการเข้าสู่ระบบด้วยคีย์ posting หรือด้วยคีย์ active เมื่ออุปกรณ์ไม่มีคีย์ posting ของบัญชีนั้น
มีบัญชีแอป
-
ลงทะเบียนแอปของคุณ: สร้างบัญชี Hive ของแอปและใส่รายการ callback ของคุณ ไม่ต้องใช้ไคลเอ็นต์ซีเคร็ตและไม่ต้องให้สิทธิ์แก่ @hivesigner
-
ส่งผู้ใช้ไปที่
https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=login&state=STATE -
ผู้ใช้เห็น «เข้าสู่ระบบ APP» พร้อม ขอบเขต «ดูชื่อผู้ใช้ของบัญชีคุณ» แล้วเลือก เข้าสู่ระบบ
-
Hivesigner เปลี่ยนเส้นทางไปยัง callback ของคุณ
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
เทียบ
stateแล้วตรวจสอบโทเค็น โทเค็นนี้เป็นชนิดloginที่ระบุแอปของคุณ จึงใช้วิธีใดก็ได้ในสองวิธีนี้- เรียก
GET /api/meด้วยโทเค็นนั้น ซึ่งจะตอบด้วยบัญชีในuserและscopeเป็น["login"]จากนั้นถอดรหัสโทเค็นแล้วตรวจtypeกับapp(ถาม API) - หรือ ตรวจสอบเอง ด้วย
type: 'login'และชื่อแอปของคุณ
- เรียก
โทเค็น login กระจายอะไรไม่ได้ /api/broadcast ปฏิเสธทุกการดำเนินการที่ส่งมาพร้อมโทเค็นนี้
ไม่มีบัญชีแอป
-
ส่งผู้ใช้ไปยัง URL อนุญาต พร้อม
redirect_uriและไม่มีclient_idhttps://hivesigner.com/oauth2/authorize?redirect_uri=REDIRECT_URI&state=STATEcallback ต้องเป็น
https://หรือเป็นhttp://บนลูปแบ็ก (localhost,127.0.0.1,[::1]) ไม่มีรายการให้ลงทะเบียน ที่นี่ Hivesigner ไม่สนใจscopeและresponse_typeคำตอบจะเป็นโทเค็นเข้าสู่ระบบเสมอ -
ผู้ใช้เห็น «HOST ต้องการยืนยันชื่อผู้ใช้ Hive ของคุณ» โดย HOST คือโฮสต์ของ callback ของคุณ แล้วเลือก เข้าสู่ระบบ
-
Hivesigner เปลี่ยนเส้นทางไปยัง callback ของคุณ
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
เทียบ
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 เพื่อใช้ฟีเจอร์ที่อยู่นอกเชน เช่นการค้นหาและการแชท พวกเขาต้องรู้เพียงว่าคนคนนั้นเป็นใคร ไม่มีอะไรมากกว่านั้น