ログイン資格情報の管理
このアプリでは、サインアップ時などにログイン資格情報をセキュアストレージに保存します。AndroidではKeyStore、iOSの場合はKeychainを利用します。KeyStoreやKeychainの詳細は、Reference - 認証 - ログイン資格情報の管理を参照してください。
ログイン資格情報の管理を実現するためのライブラリとしてExpoのSecureStoreを利用します。
機能
ログイン資格情報の管理として提供する機能は以下になります。
ログイン資格情報の保存
SecureStore.setItemAsyncを使用して、Key-Value形式で値を設定します。
SecureStoreOptionsのkeychainAccessible
はデフォルトのWHEN_UNLOCKEDを指定し、ユーザがデバイスのロックを解除している場合のみアクセスできるようにします。
注記
他の端末でセキュアストレージの値をバックアップなどから復元したくない場合は、以下の設定をする必要があります。
- iOS
- SecureStoreOptionsの
keychainAccessible
にWHEN_UNLOCKED_THIS_DEVICE_ONLYを指定します。
- SecureStoreOptionsの
- Android
- Androidの場合は、
SecureStore
の機能では実現できません。Androidのデベロッパー ガイドのデータのバックアップ - ファイルを追加または除外するに記載されている設定を追加する必要があります。
- Androidの場合は、
保存するログイン資格情報は以下になります。
Key | 設定値 | 保存タイミング |
---|---|---|
activeAccountId | ログインしたアカウントID | ログインに成功した場合 |
アカウントIDのハッシュ値_password 1 2 | アカウントIDに紐づくパスワード | サインアップに成功した場合 |
ログイン資格情報の取得
SecureStore.getItemAsyncを使用して、Keyを指定して値を取得します。
取得するログイン資格情報は以下になります。
Key | 取得する値 |
---|---|
activeAccountId | ログインしたアカウントID |
アカウントIDのハッシュ値_password | アカウントIDに紐づくパスワード |
ログイン資格情報の破棄
SecureStore.deleteItemAsyncを使用して、Keyを指定して値を破棄します。
破棄するログイン資格情報は以下になります。
Key | 破棄する値 | 破棄タイミング |
---|---|---|
activeAccountId | ログインしたアカウントID | ログアウト時 |
アカウントIDのハッシュ値_password | アカウントIDに紐づくパスワード | ログアウト時 |