IBM Cloud Docs
加密 Web 聊天中的敏感数据

加密 Web 聊天中的敏感数据

通过使用 IBM提供的公用密钥,您可以添加其他级别的加密,以隐藏从 Web 聊天中发送的敏感数据。

要使用此方法对数据进行加密,必须首先启用 Web 聊天安全功能。 有关更多信息,请参阅 启用 Web 聊天安全性

使用此方法来发送来自 Web 站点的消息中的敏感信息,例如有关客户忠诚度级别,用户标识或安全性令牌的信息,以在您通过操作调用的 Webhook 中使用。 以此方式传递给助手的信息存储在专用上下文变量中。 客户无法查看专用变量,并且专用变量永远不会发送回 Web 聊天。

例如,您可以为 VIP 客户启动与为标准客户启动的流程不同的业务流程。 您不希望非 VIP 知道它们是这样分类的,但必须将此信息传递到您的操作,以便它可以更改对话流。 为此,您可以将客户 MVP 状态作为加密变量传递。 此专用上下文变量可供操作使用,但不能供其他任何对象使用。

开发图标 教程: 有关显示使用 Web 聊天安全性来认证用户和保护敏感数据的示例的教程,请参阅 教程: 在会话中间认证用户

要加密敏感数据,请执行以下操作:

  1. 在 Web 聊天集成设置的 安全性 选项卡上,单击 生成密钥 按钮。

  2. 复制 IBM提供的公用密钥 字段中显示的公用密钥。 仅当启用了 Web 聊天安全性时,此字段才可用。

  3. 在用于创建 JWT 的 JavaScript 函数中,在有效内容中包含名为 user_payload 的专用声明。 使用此声明可包含使用 IBM 公用密钥加密的敏感数据。

    以下代码片段显示了接受 userID 和用户有效内容的函数。 如果提供了用户有效内容,那么将使用 IBM 公用密钥对其内容进行加密和签名。 在此示例中,公用密钥存储在环境变量中。

    // Example code snippet to encrypt sensitive data in JWT payload.
    const jwt = require('jsonwebtoken');
    const RSA = require('node-rsa');
    
    const rsaKey = new RSA(process.env.PUBLIC_IBM_RSA_KEY);
    
    /**
    * Returns a signed JWT. Optionally, also adds an encrypted user payload
    * as stringified JSON in a private claim.
    */
    function mockLogin(userID, userPayload) {
      const payload = {
        sub: userID, // Required
        // The exp claim is automatically added by the jsonwebtoken library.
    };
    if (userPayload) {
        // If there is a user payload, encrypt it using the IBM public key
        // and base64 format.
        payload.user_payload = rsaKey.encrypt(userPayload, 'base64');
    }
    const token = jwt.sign(payload, process.env.YOUR_PRIVATE_RSA_KEY, { algorithm: 'RS256', expiresIn: '1h' });
    return token;
    }
    

    用户有效内容必须是有效的 JSON 数据。 Web 聊天使用 Node-RSA 库的缺省选项,该库需要加密方案 pkcs1_oaep 和加密编码 base64

  4. 当 Web 聊天集成接收到此 JWT 签名的消息时,将解密 user_payload 声明的内容并将其保存为 context.integrations.chat.private.user_payload 对象。 因为这是专用变量,所以它不会包含在日志中。