使用Windows身份验证的WPF应用程序

时间:2015-01-05 14:19:14

标签: c# wpf windows-authentication

我有一个简单的wpf客户端(几个文本框),可以将一些数据上传到Web服务。我想使用Windows身份验证来使用我的应用程序。

我正在检查App.xaml的OnStartup,无论用户是否经过身份验证。我的问题是关于Thread.CurrentPrincipal.Identity.IsAuthenticated的含义是什么。

我不希望我的应用程序在网络外部使用,因为它连接到Web服务并上传数据。但我的假设是,只要您从任何Windows网络中运行此应用程序,上述属性将始终返回true?

那么如何确定应用程序是否在我的网络内部运行。我不认为检查域名或角色名称是否有任何不同,因为我总是可以设置域名并将其命名为我想要的任何名称。我不想提示用户输入任何类型的用户名或密码。

如何检查用户对特定AD的身份(AD可能不会公开提供)。基本上,应用程序只能在我的本地网络或VPN上运行。

1 个答案:

答案 0 :(得分:1)

var context = new PrincipalContext(ContextType.Domain, "DOMAINNAME");
var result = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName);

如果结果为null,则AD域中不存在该用户。

您还可以使用DirectorySearcher类根据过滤条件查询AD。仅当您想要检索有关用户的其他详细信息(如联系人,电子邮件地址等)时,此功能才更有用。