Codificar o usar hash con los datos

La información de esta página de ayuda aplica tanto a Studio como a Desktop Studio.

Studio admite varias funciones que puede utilizar para codificar o aplicar hash a los datos en sus scripts. Tanto la codificación como el hash transforman los datos en un formato diferente. La forma en que los datos cambian y lo que puede hacer con ellos es diferente:

  • Codificación: Este proceso transforma los datos en un formato que se puede usar o enviar mediante sus scripts a otros sistemas. La codificación utiliza un esquema, o método, que a menudo está disponible públicamente. Por eso, no es segura la transformación. Sin embargo, el objetivo de la codificación no es proteger los datos, sino garantizar que se puedan usar correctamente en el sistema receptor. La codificación se puede revertir para devolver los datos a su formato original.
  • Hash: Este es un proceso unidireccional que convierte los datos en una cadena alfanumérica de longitud fija. A una cadena con hash a veces se le llama hash. Los hashes se utilizan a menudo para verificar la integridad de los datos. Cuando dos cadenas idénticas reciben hash con el mismo algoritmo, sus hashes son iguales. Si dos hashes creados con el mismo algoritmo no coinciden, sabrá que las cadenas originales también eran diferentes. Este proceso se puede utilizar para verificar datos de seguridad, como firmas digitales o contraseñas, sin tener que enviar datos confidenciales en texto sin formato.

Además, Studio admite la autorización mediante OAuth. Este es un método para proporcionar seguridad a las interacciones entre NiCE CXone y otros sistemas.

Esta página proporciona información sobre las funciones que puede utilizar en scripts Studio para codificar o generar hashes de cadenas, o para configurar flujos de autorización con OAuth. No ofrece información sobre cómo implementar estas soluciones. Para mayor información sobre los algoritmos que usan estas funciones, consulte el sitio web del Internet Engineering Task Force (IETF)

El hashing es irreversible. Utilice con precaución cualquier función que aplique hash a cadenas y asegúrese de comprender cómo implementarla antes de usarla con datos en vivo.

RestProxy

Para codificar y aplicar hash a cadenas en Studio es necesario utilizar RestProxy, un servicio que le permite acceder a las API RESTful con sus scripts. También le brinda acceso a las funciones utilizadas para codificar y aplicar hash. Todos los ejemplos de Snippet para las funciones que puede usar al codificar o aplicar hash a cadenas incluyen la siguiente instrucción, que accede a RestProxy:

ASSIGN restProxy = new UCN.Data.RESTProxy()

Es importante que incluya UCN.Data.RESTProxy() en la asignación de su Variable exactamente como se muestra. RESTProxy() es la función que le permite acceder a las funciones utilizadas para codificar y aplicar hash a los datos.

Ejemplos

Se proporcionan ejemplos del código de Snippet para cada función para que los utilice en sus scripts. El código también está disponible para ser copiado desde esta página de ayuda en la tabla que describe cada función.

  1. Descargar el archivo ZIP del script de ejemplo.
  2. Unzip the contents of the ZIP file. It contains two script files related to encoding and hashing: 
    • EncodeAndHashScriptExample.json, que contiene un script de ejemplo en el que puede probar una función.
    • ExampleSnippetActions.json, que contiene una acción de Snippet para cada algoritmo de esta página. Cada Snippet contiene el código de muestra para esa función.

  3. Importe ambos archivos en Studio.
  4. Copie el código de snippet de la acción de Snippet en el archivo ExampleSnippetActions.json correspondiente a la función que desea usar.
  5. Pegue el código copiado en la acción de Snippet en el archivo EncodeAndHashScriptExample.json.
  6. Configure una interacción simulada y haga clic en Start with Trace. También puede usar el depurador en la ventana del editor de Snippet. Ambas opciones le permiten ver el contenido cambiante de las variables en el snippet.

Funciones para Codificar las cadenas

La codificación transforma los datos en un formato diferente. Puede usarlo para transmitir grandes cantidades de datos o para transmitir datos que no puede transportar el protocolo que se está utilizando. Los datos codificados pueden convertirse nuevamente a su formato original.

Hay dos funciones que puede usar para codificar cadenas. Ambos usan el esquema Base64 para codificar los datos.

Nombre de función Descripción
EncodeBase64(string)

Algunos protocolos no pueden transportar datos binarios. Puede usar esta función para convertir los datos binarios pasados con el parámetro string a un formato que se pueda transportar.

La acción Snippet en el script de ejemplo contiene este código:

ASSIGN restProxy = new UCN.Data.RESTProxy()

ASSIGN encodeThis = "This is the source data."

ASSIGN hashB64 = restProxy.EncodeBase64(encodeThis) 
EncodeBase64Url(URL)

Las funciones Base64 se pueden usar para codificar URL en aplicaciones web. Sin embargo, hay tres caracteres especiales utilizados en la codificación que se deben analizar de forma diferente en las URL. Los caracteres son el signo de más ( + ), la barra diagonal ( / ) y el signo igual ( = ). Puede usar la función EncodeBase64Url para codificar correctamente la URL pasada como argumento del parámetro URL.

La acción Snippet en el script de ejemplo contiene este código:

ASSIGN restProxy = new UCN.Data.RESTProxy()

ASSIGN encodeThis = "https://example.com"

ASSIGN hashB64url = restProxy.EncodeBase64Url(encodeThis) 

Función para decodificar una cadena

Use esta función para decodificar una cadena que haya sido codificada con la función EncodeBase64.

Nombre de función Descripción
DecodeBase64 (string)

Esta función revierte los datos codificados (string) a su formato original.

La acción Snippet en el script de ejemplo contiene este código:

ASSIGN restProxy = new UCN.Data.RESTProxy()

ASSIGN encodedString = "234sdf"

ASSIGN decodedString = restProxy.DecodeBase64(encodedString) 

Funciones para codificar una cadena con una Clave secreta

Las funciones hash usan cálculos matemáticos para generar una cadena de salida de una longitud fija. La cadena de salida, llamada hash, es útil para verificar la autenticidad de los datos en un hash. Puede usarlos para verificar contraseñas, firmas digitales, etc. Por ejemplo, puede almacenar una versión en hash de una contraseña. Cuando un usuario ingresa la contraseña, puede volverla un hash y compararla con la versión en hash de la contraseña que usted almacenó. Si son iguales, es correcta la contraseña.

Las funciones hash descritas en esta sección son todas algoritmos hash con clave. Usan un algoritmo de Código de Autenticación de Mensajes basado en Hash (HMAC). Cada algoritmo genera una salida hash de una longitud específica. Los algoritmos HMAC usan una combinación de claves secretas y funciones hash para generar la salida con hash. El proceso HMAC:

  1. Mezcla una clave secreta con los datos del mensaje.
  2. Genera un hash del resultado con la función hash.
  3. Mezcla de nuevo el valor hash con la clave secreta.
  4. Aplica la función hash por segunda vez.

Las funciones hash son unidireccionales. Esto significa que no se pueden deshacer. Por este motivo, no se pueden utilizar estas funciones para cifrar datos. El cifrado también utiliza claves, al igual que las funciones hash de esta sección. Sin embargo, los algoritmos de cifrado no incluyen los algoritmos hash y son reversibles. Studio no ofrece ninguna función de encriptación.

Es responsabilidad de su organización obtener la clave y compartirla con la entidad o el sistema receptor.

Proteja la seguridad de su clave secreta. Si se pierde la clave, ya no se pueden utilizar todos los datos con hash. No puede comparar cadenas con hash generadas con dos claves diferentes, incluso si las cadenas son idénticas.

Nombre de función Descripción
EncodeHS256(stringText, secretKey)

Esta función utiliza HMACSHA256, un algoritmo hash con clave construido a partir del algoritmo hash SHA-256 y se utiliza como un Código de Autenticación de Mensajes basado en Hash (HMAC). Incluye codificación Base64. Genera una salida hash de 256 bits de longitud, compuesta por los datos de origen stringText y la secretKey.

La acción Snippet en el script de ejemplo contiene este código:



add code examples here

		
ASSIGN restProxy = new UCN.Data.RESTProxy()

ASSIGN hashThis = "This is the source data."

ASSIGN key = "mykey"

ASSIGN hashHS256 = restProxy.EncodeHS256(hashThis, key) 
EncodeHS256NoBase64Encoding(stringText, secretKey)

Esta función es igual a EncodeHS256, excepto que no incluye la codificación Base64. La Salida con hash se compone de los datos de fuente stringText y la secretKey.

La acción Snippet en el script de ejemplo contiene este código:

ASSIGN restProxy = new UCN.Data.RESTProxy()

ASSIGN hashThis = "This is the source data."

ASSIGN key = "mykey"

ASSIGN hashHS256NoB64= restProxy.EncodeHS256NoBase64Encoding(hashThis, key) 
EncodeHS384(stringText, secretKey)

Esta función utilizaHMACSHA384, un algoritmo hash con clave construido a partir del algoritmo hash SHA-384 y se utiliza como un Código de Autenticación de Mensajes basado en Hash (HMAC). Produce una salida con hash de 384 bits de longitud, compuesta por los datos de fuente stringText y la secretKey.

La acción Snippet en el script de ejemplo contiene este código:

ASSIGN restProxy = new UCN.Data.RESTProxy()

ASSIGN hashThis = "This is the source data."

ASSIGN key = "mykey"

ASSIGN hashHS384= restProxy.EncodeHS384(hashThis, key) 
EncodeHS512(string Text, secretKey) This function uses HMACSHA512 , a keyed hash algorithm constructed from the SHA-512 hash algorithm and used as a Hash-based Message Authentication Code (HMAC). It produces a hashed output of 512 bits in length, made up of the source data stringText and the secretKey.

La acción Snippet en el script de ejemplo contiene este código:

ASSIGN restProxy = new UCN.Data.RESTProxy()

ASSIGN hashThis = "This is the source data."

ASSIGN key = "mykey"

ASSIGN hashHS512 = restProxy.EncodeHS512(hashThis, key) 

Funciones para autorización con tokens y OAuth

OAuth y la autenticación basada en tokens con JSON Web Tokens (JWT, o tokens) son dos estándares para crear flujos de autenticación en las aplicaciones. Puede usarlos juntos para garantizar que la aplicación cliente pueda verificar eficientemente los detalles del usuario. Cuando el servidor de autenticación verifica correctamente las credenciales del usuario mediante OAuth, también debe transmitir los detalles del usuario a la aplicación cliente.

Para usar estas funciones, debe contar con un servidor de autenticación disponible. Cuando se utilizan tokens, el servidor OAuth envía el token a la aplicación cliente después de que se completa el flujo de authorization. El token contiene la información del usuario final.

Las funciones disponibles para usar en scripts combinan el estándar OAuth para la autenticación de usuarios y clientes con el algoritmo de hash HMACSHA256. El estándar OAuth se define en RFC7523, que aparece en el nombre de las funciones en Studio.

Puede usar las siguientes funciones en sus scripts de Studio para incorporar un flujo de authorization con OAuth y tokens:

  • RFC7523GrantWithHS256(apiUrl, key, iss, sub, aud, jwtHeaderData, jwtPayloadData)

  • RFC7523GrantWithHS256Extended(apiUrl, key, iss, sub, aud, jwtHeaderData, jwtPayloadData, queryParams, requestHeaders)

  • RFC7523GrantWithHS384(apiUrl, key, iss, sub, aud, jwtHeaderData, jwtPayloadData)

  • RFC7523GrantWithHS384Extended(apiUrl, key, iss, sub, aud, jwtHeaderData, jwtPayloadData, queryParams, requestHeaders)

  • RFC7523GrantWithHS512(apiUrl, key, iss, sub, aud, jwtHeaderData, jwtPayloadData)

  • RFC7523GrantWithHS512Extended(apiUrl, key, iss, sub, aud, jwtHeaderData, jwtPayloadData, queryParams, requestHeaders)

Los tokens tienen tres partes: un encabezado, una carga útil y una firma. Estas funciones tienen muchos parámetros, que proporcionan datos utilizados para crear estas partes. Los parámetros se definen en la siguiente tabla:

El parámetro Tipo Descripción
apiURL Cadena de caracteres La URL de la terminal de la API con la que se está conectando.
clave Cadena de caracteres La clave secreta que desea que use la secuencia de comandos al realizar operaciones hash con esta función.
iss Cadena de caracteres El emisor del token.
sub Cadena de caracteres El asunto del token.
aud Cadena de caracteres El consumidor previsto del token. Normalmente, es el servidor de autorización al que el cliente desea acceder.
jwtHeaderData Datos dinámicos Los datos que desea incluir en el encabezado del token.
jwtPayloadData Datos dinámicos Los pares clave-valor que contienen cualquier carga útil que necesite incluir en el token. Esto puede incluir el tiempo de vencimiento del token. Esto se muestra en el siguiente fragmento de muestra como payload.exp.
queryParams Datos dinámicos Los pares clave-valor que contienen los parámetros de consulta que desea incluir con el token. Esto se incluye solo en las funciones extendidas.
requestHeaders Datos dinámicos Los pares clave-valor que contienen la información del encabezado de la solicitud. Esto se incluye solo en las funciones extendidas.

La acción Snippet en el script de ejemplo contiene este código:

ASSIGN restProxy = new UCN.Data.RESTProxy()

ASSIGN key = "key"

ASSIGN url = "https://example.com"

ASSIGN iss = "some issuer"

ASSIGN sub = "some subscriber"

ASSIGN aud = "some audience"



DYNAMIC headerData

DYNAMIC payloadData

DYNAMIC queryParams //only in the Extended functions

DYNAMIC requestHeaders //only in the Extended functions
payloadData.ist=155533969 payloadData.exp=155533969 ASSIGN hash=restProxy.RFC7523GrantWithHS256(url, key, iss, sub, aud, headerData, payloadData) ASSIGN hash=restProxy.RFC7523GrantWithHS256Extended(url, key, iss, sub, aud, headerData, payloadData, queryParams, requestHeaders)

El script de muestra tiene código para cada función disponible. Este ejemplo cubre solo dos de las seis funciones disponibles.