Crittografia dei dati sensibili nelle chat web
Utilizzando la chiave pubblica fornita da IBM, è possibile aggiungere un ulteriore livello di crittografia per nascondere i dati sensibili inviati dalla chat web.
Per utilizzare questo metodo di crittografia dei dati, è necessario prima attivare la funzione di sicurezza della chat web. Per ulteriori informazioni, vedere Abilitazione della sicurezza della web chat.
Utilizzate questo metodo per inviare informazioni sensibili nei messaggi provenienti dal vostro sito web, ad esempio informazioni sul livello di fedeltà di un cliente, un ID utente o token di sicurezza da utilizzare nei webhook richiamati dalle azioni. Le informazioni passate all'assistente AI in questo modo vengono memorizzate in una variabile di contesto privata. Le variabili private non possono essere viste dai clienti e non vengono mai rimandate alla chat web.
Ad esempio, si potrebbe avviare un processo aziendale per un cliente VIP che è diverso da quello avviato per un cliente standard. Non volete che i non VIP sappiano di essere classificati come tali, ma dovete trasmettere questa informazione alla vostra azione in modo che possa cambiare il flusso della conversazione. A tal fine, è possibile passare lo stato MVP del cliente come variabile criptata. Questa variabile di contesto privata può essere utilizzata dall'azione, ma non da altro.
Tutorial : per un tutorial che mostra un esempio di utilizzo della sicurezza della chat web per autenticare gli utenti e proteggere i dati sensibili, vedere Tutorial: autenticazione di un utente nel mezzo di una sessione.
Per criptare i dati sensibili:
Nella scheda Sicurezza delle impostazioni di integrazione della web chat, fare clic sul pulsante Genera chiave.
Copiare la chiave pubblica visualizzata nel campo della chiave pubblicaIBM. Questo campo è disponibile solo se la sicurezza della web chat è abilitata.
Nella funzione JavaScript utilizzata per creare il JWT, includere nel payload un claim privato chiamato '
user_payload. Utilizzare questa richiesta per contenere i dati sensibili, crittografati con la chiave pubblica IBM.Il seguente frammento di codice mostra una funzione che accetta un userID e un payload utente. Se viene fornito un payload utente, il suo contenuto viene crittografato e firmato con la chiave pubblica IBM. In questo esempio, la chiave pubblica è memorizzata in una variabile d'ambiente.
// 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; }Il payload dell'utente deve essere un dato JSON valido. La chat web utilizza le opzioni predefinite della libreria Node-RSA, che si aspetta lo schema di crittografia '
pkcs1_oaepe la codifica di crittografia 'base64.Quando l'integrazione della chat web riceve un messaggio firmato con questo JWT, il contenuto della richiesta '
user_payloadviene decifrato e salvato come oggetto 'context.integrations.chat.private.user_payload. Poiché si tratta di una variabile privata, non verrà inclusa nei log.