跳至主要内容

Voxsig 中的身份驗證

身份驗證是一個重要的安全功能,有助於確保客戶和客服之間的對話是私密且安全的。通過驗證雙方的身份,身份驗證有助於防止冒充和未經授權的訪問。

如果您的用戶可以登入您的應用,建議您始終啟用身份驗證。Voxsig 使用基於 HMAC 的身份驗證。這是一種使用密鑰(由 Voxsig 提供)和唯一標識符生成代碼的加密算法,然後可以使用此代碼在前端驗證用戶。

生成 HMAC

要生成 HMAC,您首先需要獲取 Voxsig 收件匣的秘鑰。可以在 設定 > 收件匣 > 設定 > 配置 > 身份驗證 中找到此密鑰。

HMAC 秘鑰

要在您的網頁小工具中使用 HMAC 進行身份驗證,您需要使用此密鑰生成 HMAC。您可以在後端使用任何編程語言生成此 HMAC。大多數語言都內置了生成令牌的加密功能,如果沒有,總是存在流行的實現。您可以在此頁面的末尾找到流行編程語言的示例。

驗證 HMAC

一旦您使用上述密鑰為標識符生成了 HMAC,您可以使用 HMAC 驗證發件人的身份。要做到這一點,通過 SDK 將 HMAC 與標識符一起發送到您的 Voxsig 伺服器。

網頁上的驗證

window.$chatwoot.setUser(`<unique-identifier-key-of-the-user>`, {
name: "", // 用戶的名稱
email: "", // 用戶的電子郵件
identifier_hash: "<identifier-hash>" // 在上一步中生成的標識符哈希
});

如果 HMAC 匹配,您可以確定發送標識符的人有權這樣做。所有未經驗證的用戶都會顯示警告標誌,表示身份未經驗證。

未經驗證的用戶

強制驗證

如果您希望強制所有用戶進行驗證,您可以通過在收件匣設定中啟用 強制用戶身份驗證 選項來實現。

強制驗證

如果啟用此選項,來自未經驗證的用戶的任何新消息都將被拒絕。

流行語言的 HMAC 生成範例

PHP

<?php

// Define your key and message
$key = 'your-secret-token-for-hmac';
$message = 'some-unique-identifier';

// Generate the HMAC
$identifier_hash = hash_hmac('sha256', $message, $key);
?>

Javascript (Node.js)

const crypto = require("crypto");

// Define your key and message
const key = "your-secret-token-for-hmac";
const message = "some-unique-identifier";

// Generate the HMAC
const identifierHash = crypto
.createHmac("sha256", key)
.update(message)
.digest("hex");

Ruby

require 'openssl'

# Define your key and message
key = 'your-secret-token-for-hmac'
message = 'some-unique-identifier'

# Generate the HMAC
identifier_hash = OpenSSL::HMAC.hexdigest('sha256', key, message)

Elixir

# Define your key and message
key = 'your-secret-token-for-hmac'
message = 'some-unique-identifier'

# Generate the HMAC
signature = :crypto.hmac(:sha256, key, message)

identifier_hash = Base.encode16(signature, case: :lower)

Golang

package main

import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"fmt"
)

func main() {
// Define your key and message
key := []byte("your-secret-token-for-hmac")
message := []byte("some-unique-identifier")

// Generate the HMAC
hash := hmac.New(sha256.New, key)
hash.Write(message)
identifierHash := hex.EncodeToString(hash.Sum(nil))

// Print the HMAC
fmt.Println(identifierHash)
}

Python

import hashlib
import hmac

# Define your key and message
secret = bytes('your-secret-token-for-hmac', 'utf-8')
message = bytes('some-unique-identifier', 'utf-8')

# Generate the HMAC
hash = hmac.new(secret, message, hashlib.sha256)
identifier_hash = hash.hexdigest()