Electronアプリでパスワードを安全に保存する方法

Electronはデスクトップアプリであり、Cookieは使えない。
しかし認証情報をファイルに保存するわけにはいかない。
適切な保管場所は、macOSならKeychain、LinuxならKeyring、WindowsならCredential Vaultだろう。
これらプラットフォームに合わせた方法で保存できるモジュールを紹介する。

node-keytar

node-keytarは、atom製のキーチェーン管理モジュール。
プラットフォームの違いを意識せずに機密情報を読み書きできる。

import keytar from 'keytar'
keytar.addPassword('service', 'account', 'password')
keytar.getPassword('service', 'account')

上記のように使い方は非常に直感的だ。

トラブルシューティング

自分が使用の際に陥った問題をまとめておく。

Electronのnodeのバージョンに合わせてコンパイルしていない

keytarはC++で書かれているのでインストール時にnode-gypでコンパイルされる。
もしうまく動かなかった場合は、Electronのバージョンに合わせて再コンパイルしてみよう。

cd node_modules/keytar
HOME=~/.electron-gyp node-gyp rebuild --target=1.2.6 --arch=x64 --dist-url=https://atom.io/download/atom-shell

--targetパラメータにElectronのバージョンを指定する。

ちなみに、Electronのバージョンに合わせてネイティブモジュールを再コンパイルしてくれるelectron-rebuildというのもある。

nodeが32bitで動いている

Electronが64bitで動いているなら、keytarもそれに合わせてコンパイルする必要がある。
現在のアーキテクチャが何bitなのか確認するには:

console.log(process.arch)

投稿者:

Takuya

Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中