はじめに
キーチェーン備忘録。
iOSのApp Groupsについて調べていく中で
- Keychain sharing
- App Extentions
- サンドボックス
の3つが結構な頻度で出てきました。
自分的によく分からないことだらけだったので利用の仕方とかまでは書きませんが見返せるように。
また、間違ったイメージで捉えているかもしれないので正してくれる方がいれば幸いです。
Keychainとは何か
大まかにまとめると…
keychainは
パスワードや秘密鍵・公開鍵などの機密情報を安全に管理するための仕組み。
KeyChainで管理する情報は暗号化されています。
主にアカウント情報を扱うのに最適とされています。
ユーザの情報を保存する仕組みとして UserDefaults がありますが、
これは設定ファイルなどのプリファレンス情報を管理するための仕組みで
違いとしてはアプリが削除されてもデータが残るかどうか、が大きいですかね。
あとは、後で記述しますが同じKeychain Access Groupに属するアプリ同士で使えます。
MacやiPhone使っている人なら聞いたことありますよね、ってか知っていますよね。
自分もキーチェーン自体はなんとなく知っていました。
Keychain sharingとは
そして本題のKeychain Servicesは、そんなKeychainに保存された情報を扱うためのAPI群のようです。
基本はOSSライブラリを使うようです。
探した感じ有名なのはこの3つ。
- SAMKeychain
- KeychainAccess
- LUKeychainAccess
業務で使用しているのはSAMKeychainでした。
記事で多いのはLUKeychainAccessかな?
長所とかまでは調べていないのでわかりませんが。。
iCloudのキーチェーンを有効にできるかなど違いがあるようです。
Keychain Access Group
Keychain Access Groupは「どの」アプリケーションがアイテムにアクセスできるのかを制御します。
デフォルトでは、アクセスできるアプリケーションはそのアイテムを格納したアプリケーション自身だけです。
グループの指定によって、同じグループに属するアプリケーションからのアクセスを許可出来ます。
このグループは、アイテムごとに指定できます。
簡単にいうと同じProvisinoingProfile,同じアカウントを使ったアプリ間での
KeyChainの共有ができるということです。
最後に
普通はもっと使い方について調べるのだと思うのですが
今回自分は概念についてのお勉強って感じでした。
もう少しまた調べて更新していこうと思います。
参考サイトの最新の記事
iOS技術者がWordpressでアプリ公式ページを制作したら
も1から10までやったことが書かれていて面白かったです。