2012-03-15 13 views
0

私はC#でユーザーにログインする必要があるアプリケーションを作成しました。アプリケーション間でパスワードを共有する

アプリケーションには3つのサブアプリケーションが含まれています。ユーザーが1つのアプリケーションで自分を識別した場合、他のアプリケーションにログインする必要はありません。

ユーザはメインアプリケーションから別のアプリケーションを開始することも、別々に開始することもできます。現在のところ、主なアプリケーションのコマンドライン引数からユーザ名とパスワードを渡して解決していますが、アプリケーション間で情報を共有するためのより良い方法があるはずです。

各アプリケーションは個別のアセンブリです。誰でも?これはあなたがしたいが、私は

+1

どのようにパスワードを検証しますか? –

+0

あなたはそれらのパスワードをどこに保存しましたか?それをどのように確認しますか? DBまたは設定ファイル? –

+0

パスワードは暗号化されたxmlファイルに保存され、共有サービスによって確認されます – klashagelqvist

答えて

0

わかりませんこのために、すべてのアプリで使用されるフラグを作成します。違いは、login/usernameの代わりにフラグを渡すことです。 ログインに成功すると、flagはtrueになり、他のアプリケーションはログインせずに起動できます。ユーザーがログアウトするとすぐにfalseになります。

0

が、私はこのようなものに新しいですすべてのアプリケーションの起動によって確認された(暗号化)ファイルに保存しますが、私は簡単な答えがあると考えるものである場合

2

アプリケーション間の共有認証APIか、アプリケーションとすべてのアプリケーションから独立した認証サービスのどちらかをソートする必要があります。あなたはログインプロセスをどのように実装しているのか書いていないので、具体的なアドバイスをするのは難しいです

+0

お返事ありがとう、基本的にこれは私がすでにやっていることです、私は他のアプリケーションがProperties.Settingsのように使うことができる共有設定 – klashagelqvist

+0

この場合、おそらく私は共有設定プロバイダのような何かをするでしょう - この記事で説明されているように:http://www.codeproject.com/Articles/136152/Create -a - カスタム設定 - プロバイダと共有の設定 – Michael

0

私は各サブアプリケーションで1回だけ認証する必要があると想定しています。サブアプリケーション内の異なる機能

1. Main App Loaded 
1a. Main App Authenticated 
1b. Set db.userSessionExpiry = DateAdd(Now + 10 minutes) (for the user inquestion) 
2a. User opens the sub app 
(you pass the username to subapp) or (sub app gets the winlogin user) or other 
2b. Sub app checks for the session expiry for this user 
2c. If the expiry time (from 1b) has gone past now, re-authenticate. 
2d. Set db.userSessionExpiry = DateAdd(Now + 10 minutes) (for the user inquestion) 

この方法では、パスワードを渡すことはなく、ユーザーに認証を残します。ユーザーがメインのアプリを起動し、残っている場合

は(彼の画面がロック解除)想像し、あなたが

にアクセスして、サブアプリケーション上で動作するようにユーザーの残りのオープン認証さTOKEを残していますが設定することができます(デフォルトのウェブセッションタイムアウトとして20分など)

ユーザが機能レベルで(起動時と同じように)認証する必要がある場合、関数が呼び出されるたびに1bを呼び出す必要があります実行される。

私はそれが意味を成して助けてくれることを望みます。

関連する問題