跳到主要内容

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()