2009-10-05 44 views
7

WPFアプリケーションでWindows認証を使用する方法に関する多くのドキュメントが見つかりません。私はそれがWPF以外のアプリとは異なるとは思っていないだろうが、それはそうだと思われる。自分のプロジェクトのプロパティ - >アプリケーションに行き、Windows認証がオンであることを確認しますが、そのオプションはWPFアプリでは使用できません(次の文書で確認します)。WPFでWindows認証を使用するには?

http://msdn.microsoft.com/en-us/library/tzdks800.aspx

私はすべてのことを無視して、ただMy.User.Name(VB)を見れば、それが空です。これは、Windows認証が何らかの形で有効になっていないことを示しています。

私には欠けている概念があるようです。誰かが正しい方向に私を向けることができますか?

私の計画では、PrincipalPermission属性を使用して、アプリケーションの特定の部分(またはアプリ全体をApplication_Startup()に適用する)へのアクセスを制限します。

答えて

7

Itowlsonの答えは正しかったが、また、いずれの方法にPrincipalPermissionAttributeを使用するためには、まず現在のプリンシパルを呼び出すことによって、Windowsのプリンシパルを行う必要があります。

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal) 
5

これはWPFで動作しない理由は、これらのサービスがWPFアプリケーションでは使用されないVBのWindowsFormsApplicationBaseクラスに実装されているためです。

Windowsユーザーの識別情報を取得するには、WindowsIdentity.GetCurrent()に電話してください。あなたはこれから名前を得ることができます。

特にVBのWindows認証オプションと同様にスレッドプリンシパルを設定したい場合は、Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent())を呼び出します。これはWindowsFormsApplicationBaseが内部的に行うものです。

編集: My.User APIが好きな人は、My.User.InitializeWithWindowsUser()を呼び出して同じことができるはずです。私はこれをテストしていない。

関連する問題