🔓

Flutterにて、既存ネイティブiOSからのセキュアデータ引き継ぎ方法

2022/02/14に公開約900字

はじめに

iOSはKeyChainと呼ばれるものにセキュアデータを保存します。
そして、FlutterでもiOSのこのKeyChainを
↓flutter_secure_storage

https://pub.dev/packages/flutter_secure_storage
const secureStorage = FlutterSecureStorage();

を使うことでアクセスが可能です。ただ、そのまま使うと既存ネイティブiOSからFlutterへのリプレイスの場面だと、既存データを引き継げない問題があります。(ドキュメントに書いていないので地味に探した)

解決策

以下のオプションを指定することで、既存ネイティブiOSからのFlutterでのリプレイスでも、セキュアデータを引き継ぐことが出来ます。

const secureStorage = FlutterSecureStorage(
  iOptions: IOSOptions(
    accountName: null,
  ),
);

詳細

このaccountNameはBundleIdの指定であれば良いのですが、デフォルトは以下の通りflutter_secure_storage_serviceという命名の指定になっています。

static const defaultAccountName = 'flutter_secure_storage_service';

https://github.com/mogol/flutter_secure_storage/blob/develop/flutter_secure_storage/lib/options/ios_options.dart#L37

なので、nullを渡してあげることでよしなにしてくれるように↓このPRで対応してくれています。(ありがとう!Kristian!)

https://github.com/mogol/flutter_secure_storage/pull/184

Discussion

ログインするとコメントできます