Archiviazione sicura

AppFramework include un plug-in Secure Storage QML, che permette alle AppStudio di memorizzare e accedere a informazioni sensibili come credenziali o token. Con questo plugin, i dati possono essere crittografati ed archiviati in una posizione fornita dal sistema con i dati, accessibile solo tramite l'app.

Su dispositivi Windows, questi valori vengono archiviati nella casella di sicurezza delle credenziali. Su macOS e iOS, questi valori vengono archiviati nel sistema keychain. Su Android, questi valori vengono archiviati nell'archivio chiavi di Android. Su Linux, questi valori sono memorizzati in un file keychain.ini nelle impostazioni di sistema.

Per utilizzare questa funzionalità, è necessario includere prima la seguente istruzione di importazione:

import ArcGIS.AppFramework.SecureStorage 1.0

Per un esempio di questa funzionalità, vedere l'app di esempio disponibile in ArcGIS AppStudio o nel repository GitHub dei campioni di AppStudio.

Archiviare valori stringa

Il componente Archiviazione Protetta nel plug in è un singleton, il che significa che non è necessario creare istanze prima del suo utilizzo. Questo componente consiste di due metodi, uno che esegue la memorizzazione dei valori e uno che esegue il recupero dei valori, così come un onError segnale.

Il metodo setValue salva una coppia chiave-valore nella memoria. Il seguente esempio di codice dimostra la funzionalità del metodo, salvando un nome utente e una password nella memoria per un uso successivo. Il campo password inoltre nasconde anche l'input fornito, a meno che la casella adiacente non sia selezionata.

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

Considera i seguenti comportamenti del metodo setValue quando lo usi:

  • La lunghezza massima per una chiave o un valore si basa sul sistema operativo. Questi possono essere controllati con i tasti maximumKeyLength e maximumValueLength proprietà. Se la chiave o il valore da memorizzare, o una combinazione dei due, è maggiore della lunghezza massima, si consiglia di suddividerli prima di memorizzarli separatamente.
  • La chiave non può essere null o vuota.
  • Se si utilizza la stessa chiave per due volte, verrà sovrascritto il valore precedente associato alla chiave.
  • L'inserimento di una chiave già esistente con un valore vuoto cancellerà la chiave attuale nel keychain.
  • Gli utenti Android rileveranno un'eccezione se alcuni caratteri speciali, come una barra (/), vengono utilizzati nelle chiavi.
  • Se il value o setValue fallisce, il segnale onError viene attivato.

Recuperare valori stringa

Il metodo value in SecureStorage è l'unico mezzo per accedere ai dati stringa memorizzati dalla propria applicazione. Sostituendo il campo username nel precedente esempio di codice con la seguente versione modificata, si utilizzerà il metodo value per riempire automaticamente il campo password se il nome utente fornito è già memorizzato.

TextField {
    id: username
    placeholderText: "Username"

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