2012-04-14 19 views
0

問題は次のとおりです。サーバーとのインターフェイスをとるデスクトップアプリケーションを開発しています。クライアントはログインする必要があります.SkypeやIMアプリケーションのようなものです。私は、クライアントに自動的にログインするオプションを与えたいと思います。アプリケーションが読み込まれるたびに資格情報を入力する必要はありません。デスクトップアプリケーション用に「ログインを自動的に」機能を実装するにはどうすればよいですか?

クライアントの情報を保護しながら、これをどのように達成できますか?

ありがとう、私は今この問題を数日間考えてきましたが、私は解決策を考え出すことができません。この段階では、どんな助けや指導も金になるでしょう。

答えて

1

サーバーに安全な通信チャネルを使用している場合(SSLなど)、ユーザー名とパスワードのハッシュを送信できます(SHA-512などの暗号化された安全なハッシュ関数を使用)。可能な衝突またはプリイメージ攻撃)。

ローカルに保存するものは、ユーザー名とパスワードのハッシュです。サーバーへの通信チャネルが安全であるとすれば、他の誰も送信された情報を見ることはできません(リプレイ攻撃は不可能です)。また、暗号的に安全なハッシュ関数を使用することは、それが一方向関数であることを意味し、元の入力に「戻る」ことはありません。

もう1つの方法は、ログインに成功するとサーバーから認証のトークンを取得することです。次に、プロトコルは、一定期間内にトークンと結合されたユーザの認証を受け入れることができる。次に、パスワードのハッシュをローカルに保存する必要はなく、ユーザー名とトークンのみを保存する必要はありません。したがって、誰かがトークンを取得した場合、それはある時点で期限切れになります。しかし、トークンは正しいユーザー名とパスワードの組み合わせでのみ、別のトークンを使用して再発行するべきではないことに注意してください。さらに、トークンを使用してログインしている場合、ユーザーはパスワードを変更/表示できません。さらに進めたい場合は、トークンを特定のIPアドレスでのみ動作するように制限することもできます。

+0

しかし、そのローカルデータにアクセスでき、別のクライアントでは、ユーザー名とハッシュ値の値を置き換えるだけの場合はどうなりますか?どうすればローカル情報を安全に保存できますか? – rtheunissen

+0

それはトークンがやるべきことです。しかし、(ユーザ名、パスワードハッシュ)をローカルに保存したいのであれば、暗号化を使用してそれを行う必要があり、それには鍵が必要になります。 –

+0

これは意味があります。開発者の管理者だけがそのキーにアクセスできるからです。ブリリアント。 :) +1 – rtheunissen

関連する問題