如何在WPF中使用Windows身份验证?

时间:2009-10-05 18:04:03

标签: wpf vb.net windows-authentication

我没有找到关于如何在WPF应用程序中使用Windows身份验证的文档。我不会认为它会与任何非WPF应用程序有任何不同,但它似乎是。我想进入我的项目属性 - >应用程序并确保Windows身份验证已启用,但该选项在WPF应用程序中不可用(如以下文档所示)。

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

如果我忽略所有这些,只看My.User.Name(VB),它就是空的。这告诉我,某些方式未启用Windows身份验证。

似乎有一个我缺少的概念;有人能指出我正确的方向吗?

我的计划是使用PrincipalPermission属性来限制对我的应用程序的某些部分(或者整个应用程序,通过将其应用于Application_Startup())的访问。

2 个答案:

答案 0 :(得分:7)

Itowlson的回答是正确的,但是,为了在任何方法上使用PrincipalPermissionAttribute,你必须首先通过调用使windows principal成为当前主体:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)

答案 1 :(得分:5)

这在WPF中不起作用的原因是这些服务是在VB的WindowsFormsApplicationBase类中实现的,该类在WPF应用程序中不使用。要自己做同样的事情:

调用WindowsIdentity.GetCurrent()以获取Windows用户身份。你可以从中得到这个名字。

如果您特别想按照VB Windows身份验证选项的方式设置线程主体,请调用Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()) - 这正是WindowsFormsApplicationBase内部所做的。

编辑:如果您更喜欢My.User API,看起来您应该可以通过调用My.User.InitializeWithWindowsUser()来执行相同的操作。我没有测试过这个。