2009-06-09 6 views
0

System.Security.Principal.WindowsIdentity.Impersonate関数はSystem.intptrパラメーターをとりますが、これは私の状況では非常に役に立たないようです(私の理解が限られています)。intreprではなく文字列(ユーザー名)に "impersonate"関数を使用できますか?

統合セキュリティを使用してページ単位でユーザーにWindows Identityに関連付けられた役割を許可するイントラネットアプリケーションを開発しています。私にはパスワードなど何もありません。単にWindowsユーザー名。テスト目的で、ユーザー名に基づいてWindowsユーザーを偽装する方法を教えてください。 "偽装"方法は明らかに私のところに飛び出しましたが、予期しないパラメータが必要です。

事前に感謝:)

答えて

3

一言で言えば、しかし、あなたは正しい方向にあります。 LoginUserA(C Win32 Api)でログインをシミュレートするか、IISサイトをWindows認証に設定してユーザーを取得する必要があります。

この場合、ページにはIPrincipalタイプのUserという名前のプロパティがあり、これを使用してそのユーザーとして実行できます。たとえば(申し訳ありませんが、C#コード)。

IPrincipal p = this.User; 
WindowsIdentity id = (WindowsIdentity)p.Identity; 
WindowsImpersonationContext wic = id.Impersonate(); 
try { 
    // do stuff as that user 
} 
finally { 
    wic.Undo(); 
} 
0

ユーザトークン(偽装中のIntPtrが表す値)は、ユーザ名以上を表します。これらは、ユーザー、認証トークン、現在のセキュリティ権限などに関する情報を含むWindowsの内部コンテキストへのハンドルです。パスワードなしで偽装することはできないためです。 LogonUser methodでトークンを作成するには、実際に「ログインする」必要があります。

私が過去に行ったことは、コードまたは設定ファイルに保存できるパスワードを持つ特別な「テスト」ユーザーアカウントを作成することです。

+0

私は、この解決策がその状況下で可能であるとは確信していません。私は開発サイクルの後半に入って以来、テーブルやインフラストラクチャの変更を避けるためにシステムをハックすることを余儀なくされました。私はWindowsIdentity.getCurrent()オブジェクトを使用し、その文字列を "Username"列と照合します。このテーブルには、ユーザ名以外にユーザのWindowsアカウントに関する情報を保存することはできません。 – Chris

0

ロールのメンバーシップを確認するために偽装する必要はありません。をWindowsIdentityに使用するだけで、UPN規則に従ってユーザー名から構築されたUPN(userPrincipalName)を取得し、そのIDからWindowsPrincipalを作成し、IsInRoleを使用してグループのメンバーシップをチェックします。これはW2K3およびWindows 2003ドメインでは機能しますが、他の状況では機能しません。

var userIdentity = new WindowsIdentity(username + "@domain"); 
var principal = new WindowsPrincipal(userIdentity); 
var inRole = principal.IsInRole("roleName"); 

また、標準またはあなたがメンバーシップをチェックする役割インターフェイスを使用できるようになりますカスタムロールプロバイダのいずれかを使用して検討する必要があります。

1

あなたは何のWindows固有のWindowsPrincipalからを使用してか、ユーザーを管理することなく、認証/認証を取得するだけの手軽な方法ですされていますか? Windowsベースである必要がある場合、Serapthには正しい方法があります。便利なauth/authストアとして実際に使用しているのであれば、おそらくIPrincipalとのインターフェイスのコードを書くべきです。テストとアプリケーションの性質に応じて、HttpContext.UserまたはThread.CurrentThread.Principalのいずれかに目的の値を持つ独自のIPrincipal実装を注入できます。

関連する問題