概要
現在 auth token は ~/Library/Application Support/Remocoder/auth-token.json に平文保存されている。より安全な保存方法として OS キーチェーンへの移行を検討する。
現状の課題
- 同じユーザー権限で動くプロセスからトークンを読み取られる可能性がある
- ディスク暗号化(FileVault)が無効な環境ではディスクアクセスで露出するリスクがある
改善方針
@electron/keytar を使用して OS ネイティブのキーチェーンにトークンを保存する。
- macOS: Keychain Access
- Windows: Credential Vault
- Linux: libsecret / kwallet
実装イメージ
import keytar from '@electron/keytar'
const SERVICE = 'remocoder'
const ACCOUNT = 'auth-token'
async function loadOrCreateToken(): Promise<string> {
const stored = await keytar.getPassword(SERVICE, ACCOUNT)
if (stored) return stored
const token = uuidv4()
await keytar.setPassword(SERVICE, ACCOUNT, token)
return token
}
注意事項
- Linux では
libsecret のインストールが必要になる場合がある
- electron-builder でのパッケージング時に native module のリビルドが必要
概要
現在 auth token は
~/Library/Application Support/Remocoder/auth-token.jsonに平文保存されている。より安全な保存方法として OS キーチェーンへの移行を検討する。現状の課題
改善方針
@electron/keytarを使用して OS ネイティブのキーチェーンにトークンを保存する。実装イメージ
注意事項
libsecretのインストールが必要になる場合がある