具有 Windows 身份验证的 WPF 应用程序

本文关键字:WPF 应用程序 身份验证 Windows 具有 | 更新日期: 2023-09-27 18:36:11

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

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

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

那么,如何确定应用程序是否正在从我的网络内部运行。我不认为检查域名或角色名称有什么不同,因为我可以随时设置一个域并随心所欲地命名它。我不想提示用户输入任何类型的用户名或密码。

如何根据特定 AD 检查用户身份(AD 可能不公开可用)。基本上,该应用程序应该只能从我的本地网络或通过VPN工作。

具有 Windows 身份验证的 WPF 应用程序

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

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

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