Stockage sécurisé

AppFramework comprend un plug-in QML de stockage sécurisé, permettant aux applications AppStudio de stocker des informations sensibles et d’y accéder, comme les identifiants de connexion ou les jetons. Grâce à ce plug-in, vos données peuvent être chiffrées et stockées dans un emplacement fourni par le système, les données étant uniquement accessibles par votre application.

Sur les appareils Windows, ces valeurs sont gardées dans le stockage sécurisé des informations d’identification. Sur macOS et iOS, ces valeurs sont conservées dans le trousseau de clés du système. Sur Android, ces valeurs sont stockées dans le magasin de clés Android. Sur Linux, ces valeurs sont stockées dans un fichier keychain.ini dans les paramètres système.

Pour utiliser cette fonction, vous devez tout d’abord inclure l’instruction d’import suivante :

import ArcGIS.AppFramework.SecureStorage 1.0

Pour voir un exemple de cette fonction, consultez l’application d’exemple disponible dans ArcGIS AppStudio ou dans le référentiel GitHub d’exemples AppStudio.

Stocker la valeur de chaîne

Le composant SecureStorage du plug-in est un composant singleton, ce qui signifie qu’il ne doit pas être instancié avant utilisation. Ce composant est constitué de deux méthodes, l’une qui stocke les valeurs et l’autre qui récupère les valeurs, et d’un signal onError.

La méthode setValue enregistre une paire clé-valeur dans l’espace de stockage. L’exemple de code suivant montre le fonctionnement de la méthode, en enregistrant un nom d’utilisateur et un mot de passe dans l’espace de stockage pour une utilisation ultérieure. Le champ du mot de passe masque les données saisies, sauf si la case adjacente est cochée.

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

Prenez en compte les comportements suivants de la méthode setValue lorsque vous l’utilisez :

  • La longueur maximale d’une clé ou valeur dépend de votre système d’exploitation. Les propriétés maximumKeyLength et maximumValueLength permettent de le vérifier. Si la longueur de la clé ou de la valeur que vous souhaitez stocker, ou une combinaison des deux, est supérieure à la longueur maximale, vous pouvez les fractionner avant de les stocker séparément.
  • La clé ne peut être nulle ou vide.
  • Si vous utilisez deux fois la même clé, la valeur précédente associée à la clé sera remplacée.
  • Fournir une valeur vide pour une clé préexistante supprimera la clé se trouvant dans le trousseau.
  • Les utilisateurs Android rencontreront une exception si certains caractères spéciaux, tels qu’une barre oblique (/), sont utilisés en tant que clés.
  • Si la méthode value ou setValue échoue, le signal onError est déclenché.

Récupérer la valeur de chaîne

La méthode value dans SecureStorage est le seul moyen d’accéder aux données de type chaîne stockées par votre application. Lorsque l’on remplace le champ nom d’utilisateur dans l’exemple de code précédent par la version modifiée suivante, la méthode value renseigne automatiquement le champ du mot de passe si le nom d’utilisateur fourni est déjà enregistré.

TextField {
    id: username
    placeholderText: "Username"

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