Webアプリケーション:スーパーユーザーが他のユーザーになりすますことを許可する-このためのデザインパターンはありますか?
質問
- 私のWebアプリケーションでは、スーパーユーザーが他のユーザーを偽装することを許可したいです。
私の質問:
これを起こすために使用できる一般的に受け入れられているデザインパターンはありますか?
- 一般的に言って、私は現在のユーザーとその中で偽装されたユーザーを追跡する必要があると想像できます。
-
しかし、あなたは私がこの変更に添付された複雑さを最小限に抑えたいと思います。
-
ちなみに、私のアプリケーションはASP.NET MVC 2アプリケーションであるため、既存のインフラストラクチャを利用できれば、それは素晴らしいです。
編集:フォーム認証を使用しています。
編集:スーパーユーザーが他のユーザーに代わって行動しているという事実を追跡する必要があります。私は2つの理由でこれをする必要があります:
- ロギングは、スーパーユーザーが他のユーザーに代わって行動したという事実を記録する必要があります。
- スーパーユーザーが「コンテキストの切り替え」になって別のユーザーを偽装したいと思うことが考えられます。
編集: @jordãoほとんどの作業可能な解決策。私の唯一の懸念は次のとおりです。(別のユーザーを偽装しながら)スーパーユーザーがホーム画面に移動し、画面の上部に 'Hello [User]'と言うと、「こんにちは[偽装ユーザー]]と述べています。 「こんにちは[スーパーユーザー]」とは反対に反対しました。そして、@Jordãoの解決策はこの画面の実装や他の画面の実装をより複雑なものであることを恐れています。
解決
他のユーザーになりすますのではなく、スーパーユーザーに十分な承認と排他的なインターフェースを与えて、他のユーザーのデータを操作できるようにします。
その後、ロギングまたは監査データがある場合は、どのユーザー(通常またはスーパー)がデータを操作したかがわかります。
他のヒント
[Authorize(Roles = "Admin")]
public ActionResult Impersonate(string username)
{
FormsAuthentication.SignOut();
var cookie = FormsAuthentication.GetAuthCookie(username, false);
Response.AppendCookie(cookie);
return RedirectToAction("index");
}
. 所属していません StackOverflow