Sichere Speicherung

Das AppFramework beinhaltet ein QML-Plug-in für die sichere Speicherung, mit dem AppStudio-Apps vertrauliche Daten, z. B. Anmeldeinformationen oder Token, speichern und darauf zugreifen können. Mit diesem Plug-in können Ihre Daten verschlüsselt und an einem vom System bereitgestellten Speicherort gespeichert werden, so dass nur Ihre App darauf zugreifen kann.

Auf Windows-Geräten werden diese Werte im Schließfach für Anmeldeinformationen gespeichert. Auf macOS- und iOS-Geräten werden diese Werte im Keychain des Systems gespeichert. Auf Android-Geräten werden diese Werte im Android Keystore gespeichert. Auf Linux-Geräten werden diese Werte in einer keychain.ini-Datei in den Systemeinstellungen gespeichert.

Um diese Funktion nutzen zu können, müssen Sie zunächst die folgende Import-Anweisung einbeziehen:

import ArcGIS.AppFramework.SecureStorage 1.0

Ein Beispiel für diese Funktionalität finden Sie in der Beispiel-App, die in ArcGIS AppStudio verfügbar ist, oder im Repository für AppStudio-Beispiele in GitHub.

Speichern von Zeichenfolgenwerten

Die SecureStorage-Komponente zum sicheren Speichern im Plug-in ist ein Einzelelement, das vor der Verwendung nicht instanziiert werden muss. Diese Komponente besteht aus zwei Methoden. Eine führt das Speichern der Werte durch, und die andere ruft die Werte sowie ein onError-Signal ab.

Mit der Methode setValue wird ein Schlüsselwertpaar gespeichert. Das folgende Codebeispiel veranschaulicht die Funktionalität der Methode. Dabei werden ein Benutzername und ein Kennwort für die spätere Verwendung gespeichert. Zudem wird die Eingabe im Kennwortfeld ausgeblendet, wenn das benachbarte Kontrollkästchen nicht aktiviert ist.

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

Berücksichtigen Sie bei der Verwendung der Methode setValue die folgenden Verhaltensweisen:

  • Die maximale Länge für einen Schlüssel oder Wert hängt von Ihrem Betriebssystem ab. Sie kann mit den Eigenschaften maximumKeyLength und maximumValueLength überprüft werden. Wenn der zu speichernde Schlüssel oder Wert, oder eine Kombination dieser beiden, die maximale Länge überschreitet, sollten sie geteilt und separat gespeichert werden.
  • Der Schlüssel darf nicht NULL oder leer sein.
  • Wenn Sie zweimal denselben Schlüssel verwenden, wird der vorherige mit dem Schlüssel verknüpfte Wert überschrieben.
  • Wenn Sie für einen bereits vorhandenen Schlüssel einen leeren Wert eingeben, wird der in der Keychain vorhandene Schlüssel entfernt.
  • Unter Android tritt ein Ausnahmefehler auf, wenn in Schlüsseln bestimmte Sonderzeichen, z. B. Schrägstriche (/), verwendet werden.
  • Schlägt die Methode value bzw. setValue fehl, wird das onError-Signal ausgelöst.

Abrufen von Zeichenfolgenwerten

Die Methode value in SecureStorage stellt die einzige Möglichkeit dar, um auf die von Ihrer App gespeicherten Zeichenfolgendaten zuzugreifen. Wenn Sie das Feld für den Benutzernamen im vorherigen Codebeispiel durch die folgende geänderte Version ersetzen, trägt die Methode value automatisch das Kennwort ein, wenn der angegebene Benutzername bereits gespeichert wurde.

TextField {
    id: username
    placeholderText: "Username"

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