AppFramework には Secure Storage QML プラグインが組み込まれているため、AppStudio アプリを使用して、認証情報やトークンなどの機密情報を保存したり、これらの機密情報にアクセスしたりすることができます。 このプラグインを使用することで、データはシステム指定の場所に暗号化および保存され、このデータにはアプリからのみアクセスできます。
Windows デバイスでは、これらの値は資格情報保管ボックスに保存されます。 macOS と iOS では、これらの値はシステム キーチェーンに保存されます。 Android では、これらの値は Android Keystore に保存されます。 Linux では、これらの値はシステム設定の keychain.ini ファイルに保存されます。
この機能を使用するには、まず次のインポート ステートメントを含める必要があります。
import ArcGIS.AppFramework.SecureStorage 1.0
この機能の例については、ArcGIS AppStudio または AppStudio サンプル GitHub リポジトリにあるサンプル アプリをご覧ください。
文字列値の保存
プラグイン内の SecureStorage コンポーネントはシングルトンです。このため、使用前にインスタンス化する必要はありません。 このコンポーネントは、値の保存を実行するメソッドと、値の取得を実行するメソッドの 2 つのメソッドから構成され、onError シグナルも同様です。
setValue メソッドは、キーと値のペアをストレージに保存します。 次のサンプル コードは、このメソッドの機能を示しており、後で使用できるようにユーザー名とパスワードをストレージに保存します。 隣接するチェックボックスがオンでない限り、パスワードのフィールドに入力されたデータは非表示になります。
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)
}
}
setValue メソッドを使用する場合は、このメソッドの次の挙動を考慮してください。
- キーまたは値の最大長は、オペレーティング システムに基づきます。 これらは、maximumKeyLength および maximumValueLength プロパティで確認できます。 保存するキーや値、またはそれらの組み合わせが最大長より大きい場合は、分割してから別々に保存することを検討してください。
- キーは NULL または空にできません。
- 同じキーを 2 回使用すると、そのキーに関連付けられた以前の値が上書きされます。
- 既存のキーに空の値を指定すると、キーチェーンに存在するキーが削除されます。
- Android では、特定の特殊文字 (スラッシュ (/) など) がキーに使用された場合、例外が発生します。
- value または setValue メソッドが正常に実行されないと、onError シグナルがトリガーされます。
文字列値の取得
SecureStorage 内の value メソッドは、アプリに保存されている文字列データにアクセスできる唯一の手段です。上記のサンプル コードにあるユーザー名フィールドを次の修正バージョンに置き換えると、入力したユーザー名がすでに保存されている場合に、value メソッドでパスワード フィールドが自動的に入力されます。
TextField {
id: username
placeholderText: "Username"
onEditingFinished: {
password.text = SecureStorage.value(username.text)
}
}