6

アプリケーションは、フォームではなく、Windows統合セキュリティをすでに使用しています。私が達成しようとしているのは、いわゆる「ステップアップ」認証、または次のシナリオの「強制再認証」です。

  1. ユーザーは一般的で些細なことをしてサイトを閲覧しています
  2. 突然、ユーザーはリソース割り当ての承認や自動車ローンの確認などのデリケートなアクションを実行する必要があります。
  3. ユーザーは、SharePointの「別のユーザーとしてサインイン」と同様の方法で、機密ページにリダイレクトされる前に資格情報の入力を求められます。
  4. 入力された資格情報が現在ログインしているユーザーの資格情報と同じである場合に限り、アプリケーションは機密領域に進みます。

これにより、次の2つの問題を防ぐことができます。

  1. ユーザーが会議またはコーヒーに行き、ワークステーションをロックするのを忘れ、同僚がセッションを使用して機密領域にアクセスする
  2. ユーザーは上司の資格情報を入力して(たとえば、上司の肩越しに覗いたため)、機密領域にアクセスします。

これを「パラノイド」と見なす人もいれば、常識であり、どこかのフレームワーク(jQueryまたは.NET)で構築する必要があると言う人もいます。

4

2 に答える 2

5

フォームに、アクションを実行するためのリクエストとともにクレデンシャルを送信してもらいます。つまり、一部のアクションでは、ユーザー名/パスワードを指定する必要があります。PrincipalContext ValidateCredentialsメソッドを使用して、適切な資格情報が入力されていることを確認し、指定されたユーザー名がUser.Identityオブジェクトの現在のユーザー名と一致することを確認します。

public ActionResult SensitiveAction( SensitiveModel model, string username, string password )
{
    using (var context = new PrincipalContext(ContextType.Domain))
    {
         if (!string.Equals(this.User.Identity.Name,username,StringComparison.OrdinalIgnoreCase)
             || !context.ValidateCredentials(username,password))
         {
              return View("PermissionDenied");
         }
    }

    ...
}
于 2011-09-28T15:34:06.590 に答える
1

ユーザーが会議またはコーヒーに行き、ワークステーションをロックするのを忘れ、同僚がセッションを使用して機密領域にアクセスする

これは初めて機能しますが、今では上司がデリケートな領域に入り、資格情報を再入力してから、コーヒーを飲みに行きます。機密性の高いリクエストごとにプロンプ​​トを表示しますか?ユーザーはそれを我慢しません。

ユーザーは上司の資格情報を入力して(たとえば、上司の肩越しに覗いたため)、機密領域にアクセスします。

誰かが上司の資格情報を知っていて入力した場合、それを検出するためにできることは何もありません。

于 2011-09-29T17:01:50.927 に答える