2011-10-24 20 views
12

オフラインで作業する必要のあるWebアプリケーションを構築しています。このシステムは、販売取引を取得するために構築されています。 「オフライン」部分の大部分はかなり簡単です。データをローカルに保存し、ネットワークに戻ったときに同期するだけです。ここまでは順調ですね。オフラインWebアプリケーションでのユーザー認証

問題は認証にあります。このアプリケーションは、単一のOSユーザーアカウントを持つ共有マシン上で実行されます。オフラインの場合、ユーザーを認証するにはどうすればよいですか?

ユーザー自身には、私が分離する必要がある(つまり、クライアント上でそれらを互いに保護する必要がない)プライベートデータがありません。私は自分のパスワードを検証できるようにする必要があるので、接続が切断されても、毎日異なるユーザーにログインさせることができます。

私が考えているアプローチの1つは、IndexedDBのクライアント側でパスワードハッシュをキャッシュすることです。限られたユーザーだけが特定の共有マシンからのログインを許可されるため、パスワードデータベース全体をローカルにキャッシュする必要はありません。私は適切なパスワードポリシー(複雑さと有効期限の要件)があると仮定し、ハッシュ自体は安全です(bcrypt)、ちょうどアイデアの恐怖はこれですか?

他にもオプションがありますか?

+0

私はパスワードの有効期限が有益であるよりも有害である可能性がありますからhttp://www.cryptosmith.com/node/218あなたがあなたのデータベースを公開している場合はそうではないかもしれませんが。 –

答えて

9

これは、マシンがドメインコントローラにアクセスできない場合(たとえば、作業用ラップトップを飛行機に乗せて、ノートパソコンに接続なしでログインする必要がある場合など)のWindowsと他のシステムの動作を効果的に示します。あなたのマシンはあなたのユーザー名とパスワードのペアのキャッシュを書き留めておき、オフラインであってもその資格情報を使ってあなたを入れます。

一般的には、ユーザー名|パスワードハッシュを保存することは、合理的に(たとえば、塩を使用したり、IVを使用して)ハッシュしていると仮定すると、かなり安全です。考えてみたいことは、ハッシュファイルを「エスケープ」することです。これが機密データであれば、非常に慎重にしたいと思うかもしれません - これは受け入れられないかもしれませんが、それは超高感度データではない場合は、おそらくOKです:良いハッシュで私はあなたが合理的に完全に安全)。

1

多分これはほとんど無関係ですが、私はnodejsプロジェクトでこのアプローチを使用します。 ユーザーがユーザー名とパスワードで認証されると、この特定のセッションにのみ使用される固有のAPIキーが割り当てられます。

各ユーザーには、1つのAPIキーしか設定できません。

このAPIキーは、ユーザーを認証するためにサーバーに対して行われたすべての要求に追加されます。

ユーザーがログアウトすると、APIキーが削除されます。また、サーバー上でAPIキーをパージすることもできます。これにより、ユーザーはサーバーでもう一度認証されます。

興味がある場合は、このアプローチを使用するnodejsオープンソースプログラムへのリンクを提供できます。

+0

私は確かに興味を持っています。そうしたい場合はリンクを提供してください。 – GojiraDeMonstah

+0

このapiキーを与えて、時間枠も良い練習です – Serdar

+0

この投稿は読むのに良いリソースhttp://www.staticapps.org/articles/authentication-and-authorization – Serdar

関連する問題