Danh tính người dùng
Ký user hash ở server để trợ lý biết chắc người đang chat là ai.
Khi app có đăng nhập, trợ lý cần biết chắc chắn người dùng là ai trước khi tra đơn hàng, công nợ hay dữ liệu cá nhân.
Voicebox dùng chữ ký HMAC: server của bạn ký user.ref bằng identity secret, trình duyệt chỉ chuyển chữ ký đi.
hash = hex( HMAC_SHA256( identity_secret, user.ref ) )Identity secret là bí mật
Chỉ tính hash ở server. Không bao giờ đưa identity secret xuống trình duyệt hay app. Nghi lộ ⇒ xoay secret ngay.
Chế độ danh tính
| Chế độ | Dùng khi | Hành vi |
|---|---|---|
anonymous | Web công khai, khách vãng lai | Mọi người là khách; user bị bỏ qua |
optional | Có người đăng nhập, có người không | Có user ⇒ phải kèm hash đúng; không có ⇒ khách vãng lai |
verified | Dữ liệu cá nhân (đơn hàng, công nợ), app nhân viên | Bắt buộc user + hash đúng |
Tính hash
import { createHmac } from 'node:crypto';
const hash = createHmac('sha256', process.env.VOICEBOX_IDENTITY_SECRET).update(user.id).digest('hex');Đưa hash xuống trang cùng phiên đăng nhập rồi:
Voicebox.init({ key: 'vb_xxx', user: { ref: 'kh001', name: 'An', hash } });
// hoặc sau khi đăng nhập: vb.identify({ ref: 'kh001', name: 'An', hash });Lấy identity secret
Identity secret được cấp một lần khi tạo voicebox hoặc khi xoay secret. Lưu ngay vào secret manager của server. Nếu bạn chưa nhận được secret, liên hệ bộ phận hỗ trợ Aivigo để xoay và cấp lại.
Quyền dùng vẫn do Aivigo quyết
Chữ ký chỉ chứng minh danh tính. Quyền dùng (danh sách cho phép, gói cước, hạn mức, tài khoản bị khoá) vẫn được kiểm theo
user.ref — người dùng bị khoá dù ký đúng vẫn nhận 403.