Almacenamiento seguro

AppFramework incluye un plug-in QML para almacenamiento seguro, lo cual permite a las aplicaciones de AppStudio almacenar y acceder a información sensible, tales como credenciales o tokens. Con este plug-in, sus datos se pueden cifrar y almacenar en una ubicación proporcionada por el sistema y solamente su aplicación podrá acceder a estos datos.

En dispositivos Windows, estos valores se almacenan en la Caja de seguridad de credenciales. En dispositivos macOS e iOS, estos valores se almacenan en la cadena de claves del sistema. En dispositivos Android, estos valores se almacenan en el Android Keystore. En dispositivos Linux, estos valores se almacenan en un archivo keychain.ini de su configuración del sistema.

Para utilizar esta funcionalidad, primero tiene que incluir la siguiente instrucción de importación:

import ArcGIS.AppFramework.SecureStorage 1.0

Como ejemplo de esta funcionalidad, consulte la aplicación de muestra disponible en ArcGIS AppStudio o en el repositorio de GitHub de muestras de AppStudio.

Almacenar valor de cadena

El componente SecureStorage del plug-in es una clase individual, por lo que no se debe instanciar antes de utilizarlo. Este componente consta de dos métodos: uno que realiza el almacenamiento de los valores y otro que realiza la recuperación de los valores, además de una señal onError.

El método setValue guarda un par de clave-valor en el almacenamiento. La siguiente muestra de código demuestra la funcionalidad del método y guarda un nombre de usuario y una contraseña en el almacenamiento para su uso posterior. El campo de contraseña también oculta la entrada proporcionada, salvo que la casilla de verificación adyacente esté activada.

TextField {
    id: username
    placeholderText: "Username"
}

TextField {
    id: password
    placeholderText: "Password"
    anchors.left: username.right
    echoMode: passwordVisible.checked === true ? TextInput.Normal : TextInput.PasswordEchoOnEdit
}

CheckBox {
    id: passwordVisible
    anchors.left: password.right
}

Button {
    id: secureButton
    text: qsTr("Store Combination")
    anchors.top: username.bottom
    onClicked: {
        SecureStorage.setValue(username.text,password.text)
    }
}

Tenga en cuenta los siguientes comportamientos del método setValue cuando lo utilice:

  • La longitud máxima de una clave o un valor depende de su sistema operativo. Puede comprobarlo con las propiedades maximumKeyLength y maximumValueLength. Si la clave o el valor (o una combinación de ambos) que desea almacenar es mayor que la longitud máxima, plantéese dividirlos antes de almacenarlos por separado.
  • La clave no puede ser nula ni estar vacía.
  • Si utiliza la misma clave dos veces, el valor anterior asociado a la clave se sobrescribirá.
  • Si proporciona un valor vacío para una clave preexistente, se eliminará la clave presente de la cadena de claves.
  • Los usuarios de Android se encontrarán con una excepción si se usan determinados caracteres especiales en las claves, por ejemplo, la barra diagonal (/).
  • Si el método value o setValue da error, se desencadena la señal onError.

Recuperar valor de cadena

El método value en SecureStorage es el único medio para acceder a datos de cadenas de caracteres almacenados por su aplicación. Si sustituye el campo nombre de usuario de la muestra de código anterior por la siguiente versión modificada, se utilizará el método value para rellenar automáticamente el campo contraseña si el nombre de usuario proporcionado ya está almacenado.

TextField {
    id: username
    placeholderText: "Username"

    onEditingFinished: {
        password.text = SecureStorage.value(username.text)
    }
}