1

私はここで同様の質問を見ましたが、それらのどれも私の状況に実際に対処していませんでした、これがセットアップです:

ユーザーが監査結果を送信できるFormsAuthentication(SqlMembershipProvider)を備えたASP.NETアプリケーションがあります。

ユーザーがインターネットに接続していないときに監査結果を送信できるように、軽量のデスクトップアプリ( MyAppと呼びます)(オフラインを使用するため)を作成したいと思います。

これが必需品です:

  1. SqlMembershipProviderに対してユーザーを認証します(匿名ユーザーは監査結果を送信できません)
  2. ユーザーに一度だけ資格情報を要求します(ユーザーがMyAppを開いたとき)(認証トークンを保存する機能がありますが、場合によっては、複数のユーザーが使用しているラップトップにMyAppがインストールされるため、MyAppが開いているたびにユーザーにログインを強制する必要があります)
  3. パスワードをプレーンテキストで保存しないでください( MyAppを開いたときにユーザーがオフラインの場合、接続が利用可能になるたびにユーザーを認証するために資格情報を保存したい)-これが可能かどうかわからない

上記の3つのことを理解したら、残りは簡単です。

上記が混乱する場合の簡単なシナリオを次に示します。

  1. MyAppはオフィスのラップトップにインストールされており、旅行中に持ち歩くことができます。
  2. 2人のユーザーが遠隔地(インターネットなし)に移動し、2つの個別の監査を実施します
  3. ユーザー1はMyAppを開き、ユーザー/パスを提供し(MUST-HAVESの#2を参照)、3つの結果を送信します(ユーザーを認証し、接続が利用可能になるたびに結果を送信するために、ユーザーの資格情報とともに結果を保存します)-#を参照必需品の1と#3
  4. ユーザー2はMyAppを開き、ユーザー1がステップ3で行ったのと同じルーチンを実行します。
  5. 2日後、彼らはオフィスに戻り、インターネットが利用可能になり、ステップ3と4の結果が、それぞれのユーザーに代わって私のWebアプリに送信されます。

私はMicrosoftSyncフレームワークを調べましたが、それは私がやっていることに対してやり過ぎのように見えました(そして、それが私の必需品にも対応できるかどうかはわかりません)。

彼らが私の必需品を説明する限り、私はどんな代替アプローチにもオープンです。

ご協力ありがとうございました。

4

1 に答える 1

0

ここには難しい問題が隠されています。複数のユーザーが同じラップトップでレポートを入力するユースケースは、アプリが再接続されてから監査レポートを送信するときに認証するのではなく、ユーザーが監査レポートを入力する前に認証する必要があることを示唆しています。

認証はおそらく、ユーザーが入力した資格情報が正しいかどうかをユーザーに通知する必要があるため、ユーザー資格情報データベースをラップトップに同期する必要があります。これは重大なセキュリティ リスクであり、ユーザー データベースが暗号化され、ハッシュ化されソルト化されたパスワードを使用している場合でも、非常に慎重に行う必要があります。たとえば、アプリを使用するユーザーのレコードのサブセットのみを同期したい場合があります。

そのため、ASP.NET アプリケーションで使用するのと同じ認証プロバイダーを使用してユーザーを認証し、アプリケーションが接続されるたびにそのデータベースを再同期することができます。データベース以外に資格情報を保存する必要はありません。データベースは、前述のように、Windowsデータ保護 APIまたは同様の強力なものを使用して暗号化する必要があります。

ユーザーがユーザー名を入力するだけでレポートを自分のアカウントに関連付けることができ、再接続時にレポートをアップロード (ただし送信はしない) し、ユーザーがWeb サイトにアクセスし、通常の方法で認証した後、アップロードされたレポートを確認します。

于 2011-06-12T00:18:36.567 に答える