英語で読む

次の方法で共有


Xamarin.Essentials:セキュリティで保護されたストレージ

SecureStorage クラスは、単純なキーと値のペアを安全に格納するのに役立ちます。

作業開始

この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。

SecureStorage の機能にアクセスするには、次のプラットフォーム固有の設定が必要です。

iOS シミュレーター上で開発している場合は、キーチェーン エンタイトルメントを有効にし、アプリケーションのバンドル ID に対してキーチェーンのアクセス グループを追加します。

iOS プロジェクト内の Entitlements.plist を開き、キーチェーン エンタイトルメントを見つけて有効にします。 これで、アプリケーションの ID がグループとして自動的に追加されます。

プロジェクトのプロパティの [iOS バンドル署名] で、 [カスタムの権利]Entitlements.plist に設定します。

ヒント

iOS デバイスに展開する場合は、このエンタイトルメントは不要であり、削除する必要があります。

セキュリティで保護されたストレージの使用

クラスの Xamarin.Essentials への参照を追加します。

C#
using Xamarin.Essentials;

指定されたキーに対する値をセキュリティで保護されたストレージに保存するには:

C#
try
{
  await SecureStorage.SetAsync("oauth_token", "secret-oauth-token-value");
}
catch (Exception ex)
{
  // Possible that device doesn't support secure storage on device.
}

セキュリティで保護されたストレージから値を取得するには:

C#
try
{
  var oauthToken = await SecureStorage.GetAsync("oauth_token");
}
catch (Exception ex)
{
  // Possible that device doesn't support secure storage on device.
}

注意

要求されたキーに関連付けられている値が存在しない場合、GetAsyncnull を返します。

特定のキーを削除するには、次を呼び出します。

C#
SecureStorage.Remove("oauth_token");

すべてのキーを削除するには、次を呼び出します。

C#
SecureStorage.RemoveAll();

ヒント

GetAsync または SetAsync の呼び出し時に例外がスローされることがあります。 セキュリティで保護されたストレージに対応していないデバイス、暗号化キーの変更、データの破損が原因として考えられます。 可能であれば、設定を削除し、追加し直すことでこれに対処することをお勧めします。

プラットフォームの実装の詳細

iOS デバイスに値を安全に格納するために、キーチェーンが使用されます。 値を格納するために使用される SecRecord は、 [アプリのバンドル ID].xamarinessentials に設定された Service 値を持ちます。

場合によっては、キーチェーン データが iCloud と同期され、アプリケーションをアンインストールしても iCloud やユーザーのその他のデバイスからセキュリティで保護された値が削除されない場合があります。

制限事項

この API は、少量のテキストを格納することを想定しています。 大量のテキストを格納するためにこれを使用しようとすると、パフォーマンスが低下する可能性があります。

API

他の Xamarin ビデオは、Channel 9 および YouTube でご覧いただけます。