Skip to main content

Xác thực danh tính trong AhaSpot

Xác minh danh tính là một tính năng bảo mật quan trọng giúp đảm bảo rằng các cuộc trò chuyện giữa khách hàng và nhân viên hỗ trợ là riêng tư và an toàn. Bằng cách xác minh danh tính của cả hai bên, xác thực danh tính giúp ngăn chặn hành vi mạo danh và truy cập trái phép.

Nếu người dùng có thể đăng nhập vào ứng dụng của bạn thì bạn nên bật xác minh danh tính. AhaSpot sử dụng xác minh danh tính dựa trên HMAC. Đó là thuật toán mã hóa sử dụng khóa bí mật (do AhaSpot cung cấp) và mã định danh duy nhất để tạo mã, mã này sau đó có thể được sử dụng để xác minh người dùng ở giao diện người dùng.

Tạo HMAC

Để tạo HMAC, trước tiên bạn cần lấy khóa bí mật cho hộp thư đến AhaSpot của mình. Khóa có thể được tìm thấy trongCài đặt > Hộp thư đến > Cài đặt cho kênh website > tab Cấu hình > Xác thực danh tính người dùng

Để sử dụng HMAC để xác thực danh tính trong tiện ích web của bạn, bạn cần tạo HMAC bằng khóa này. Bạn có thể tạo HMAC này bằng bất kỳ ngôn ngữ lập trình nào trong phần phụ trợ. Hầu hết các ngôn ngữ đều có chức năng mã hóa tích hợp để tạo mã thông báo, nếu không muốn nói là các triển khai phổ biến luôn tồn tại. Bạn có thể tìm thấy ví dụ về các ngôn ngữ lập trình phổ biến ở cuối trang này.

Xác minh HMAC

Sau khi tạo HMAC cho số nhận dạng bằng khóa ở trên, bạn có thể sử dụng HMAC để xác thực danh tính của người gửi. Để thực hiện việc này, hãy gửi HMAC cùng với mã nhận dạng đến máy chủ AhaSpot của bạn thông qua SDK.

Xác minh trên web

window.$chatwoot.setUser(`<unique-identifier-key-of-the-user>`, {
name: "", // Name of the user
email: "", // Email of the user
identifier_hash: "<identifier-hash>" // Identifier Hash generated in the previous step
}

Nếu các HMAC khớp nhau, bạn có thể tin tưởng rằng người gửi mã định danh được phép làm như vậy. Tất cả người dùng chưa được xác minh sẽ hiển thị với dấu cảnh báo, cho biết danh tính chưa được xác minh.

Xác minh trong React Native

Bạn cũng có thể tích hợp xác minh danh tính trong React Native.

const App = () => {
const user = {
identifier: "[email protected]",
name: "John Samuel",
email: "[email protected]",
identifier_hash: "<identifier-hash>",
};

return (
<ChatWootWidget
websiteToken="WEBSITE_TOKEN"
baseUrl="https://app.chatwoot.com"
isModalVisible={showWidget}
user={user}
/>
);
};

Thực thi xác minh

Trong trường hợp bạn muốn thực thi xác minh cho tất cả người dùng, bạn có thể làm như vậy bằng cách bật tùy chọn Bắt buộc Xác thực danh tính người dùng trong cài đặt hộp thư đến.

Nếu tùy chọn này được bật, mọi tin nhắn đến từ người dùng chưa được xác minh sẽ bị từ chối.

Mẫu tạo HMAC cho các ngôn ngữ

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