10

フォーム認証とWindows認証の両方について、MVC3 Webアプリにユーザー特権の昇格を実装する必要がありますが、この質問はWindows認証にとって重要です。これは、特権の高いユーザーが特権の低いユーザーを支援するためのものです。たとえば、事務ユーザーがタスクを実行していて、管理ユーザーが続行する前にタスクを実行する必要がある場合、管理ユーザーは昇格できる必要があります。同じセッションを特権レベルに設定し、管理タスクを実行して、低い方の特権をセッションに復元します。事務ユーザーのデスクトップだけでこれを実現したいので、事務ユーザーがログオフし、管理ユーザーがログオンしないと、ここで方法がわかりません。たぶん、ユーザーの切り替えはまったく新しいセッションよりもきれいですが、私は「実行」を非常に望んでいます

これも可能ですか?もしそうなら、どうすればこれを達成できますか?どこから探し始めたらいいのかわからない。

4

4 に答える 4

5

「パワーユーザー」が他のユーザーの特定の役割を一時的に設定できるようにします。たとえば、DateTimeを使用して役割の有効期限も設定します。

于 2012-05-26T09:48:32.310 に答える
3

あなたはあなたのサイトのどこかにアンカーを置くことができます:

@Html.ActionLink("elevate to admin", "SwitchToAdmin", "Home")

次に、管理者の資格情報を入力できるようにするコントローラーアクションを実行します。

public ActionResult SwitchToAdmin()
{
    // TODO: Adjust the role name that your administrators will have
    if (!User.IsInRole(@"DOMAIN\Administrators"))
    {
        // The user is not currently an admin => popup a Logon box
        // so that the administrator could authenticate himself
        return new HttpUnauthorizedResult();
    }
    else
    {
        // After inputting the correct username and password for the
        // admin, we can now redirect to the home action and start performing
        // the admin tasks
        return RedirectToAction("index", "home");
    }
}

復帰プロセスは逆になります。ユーザーが管理者である場合に401をスローするコントローラーアクションを呼び出すリンクを作成して、通常のユーザーがユーザー名とパスワードを入力できるようにすることができます。

于 2012-06-29T08:46:52.193 に答える
1

これを行うためにWindows認証を使用するには、次のものが必要になると思います。

  • コマンドとして実行
  • 他のログオンを開始するためのユーザーのデスクトップ上のショートカット
  • ユーザーのログオン情報の入力を求めるバッチスクリプト、または情報を収集するための別のデスクトッププログラム(ショートカットは、これらのいずれかを選択したものを指します)
  • コマンドラインの情報のrun as準備ができたら、ブラウザを起動するか、ブラウザが埋め込まれたカスタムプログラムを起動することができます。

ブラウザアプローチが組み込まれたプログラムの利点は、タイムアウト後に強制的に終了するなど、追加のセキュリティ対策を講じることができることです。

とにかく、それは1つの可能な解決策です。また、ビジネスニーズを解決するためのより複雑でない方法を考え出すこともできます。おそらく、管理者のリモートデスクトップセッションですか?

于 2012-06-27T13:58:51.363 に答える
1

run as コマンドに相当するのは、ユーザーの偽装を使用することです。つまり、別のユーザーとしてより高い特権を必要とするコマンドを実行しています。次のように動作するはずです: 1) ユーザーが特権リソースにアクセスしようとします。webapp は、より高い特権を必要とするすべてのタスクの一種のテーブルを持っているか、操作を実行しようとして取得したセキュリティ例外をインターセプトすることにより、これを検出します。2) これが検出されると、「RequiresPrivilegesElevationException」(定義する必要がある例外) をスローします。この例外はコントローラーによってキャッチされ、ユーザーに高い特権を要求する必要があることがわかりました3)コントローラーは、ユーザーに管理者(またはより高い特権のユーザーパスワード)を要求します偽装コンテキストを作成するために使用され、

このアプローチの欠点は、認証情報と権限の昇格がサーバーへの 1 回の旅行だけ続くことです。それ以外の要求では、ユーザーは認証情報を再挿入する必要があります。セキュリティブラウザの制限により、これを回避する安全な方法はありません

于 2012-06-30T08:52:19.647 に答える