技術

【Swift】キーチェーンにライブラリなしでデータを保存

どうも、フリーランスのITエンジニア兼ブロガー兼投資家のKerubitoです。

キーチェーンにデータ(ユーザーID、パスワード、証明書、秘密鍵)を保存したい。

よくあることかと。

ライブラリを使うと簡単にできるんですが、使わなくとも意外と簡単にできました。

・Swiftバージョン:5
・Xcodeバージョン:13.0
・使用デバイス:iPhoneX(15.0)

キーチェーンとは?

キーチェーンはユーザーIDやパスワード、クレジットカード情報といったセキュアなデータを集中管理してくれます。

端末のストレージに保存されるのですが、隔離された領域、しかも暗号化(証明書などは暗号化されない)され、外部から読み取ることが非常に困難。

加えて、iCloudと連携することによって、複数のデバイスでキーチェーンに保存された情報を共有することができます。

今回はSwiftを使ってこの便利なキーチェーンにユーザーIDとパスワードを保存してみようと思います。

世間には便利なライブラリが出回っているのですが、ライブラリは入れたら入れたで管理が大変。

プロジェクトが肥大化してしまいますし、アップデートで不具合が出る可能性もあります。

自作するのが大変なら有効な手段ですが、今回のような「ちょっとしたもの」であればライブラリを使うまでもないケースもあるかと。

キーチェーンに保存する

キーチェーンに保存から。

クエリを作成し、渡します。

このクエリでキーチェーンに保存するデータの種類(kSecClassGenericPasswordは一般的なパスワード)、一意性を担保するkSecAttrService、kSecAttrAccountを指定します。

SecItemCopyMatching()でデータの存在を確認し、あるなしで登録(SecItemAdd)、更新(SecItemUpdate)をそれぞれやっています。

 

キーチェンからデータを読み出す

今度はキーチェーンからデータを読み出します。

読み出し側もクエリを作成するところは同じ。

はい、以上です。

簡単にキーチェーンへのアクセスが可能です。

画面と呼び出し

おまけの画面。

 

おまけのモデル

実行結果

実行するとこのようになります。

SwiftでKeychainにデータを保存する

ソースはこちら。

https://github.com/Kerubito0/Keychain.git

以上、楽しい開発ライフを!

-技術

© 2021 Kerubitoのブログ