繁体   English   中英

如何对ASP.NET应用程序中另一台计算机上的本地Windows用户进行身份验证?

[英]How would I authenticate against a local windows user on another machine in an ASP.NET application?

在我的ASP.NET应用程序中,我需要能够针对另一台计算机上的本地Windows用户/组(即非Active Directory)进行身份验证/授权,并且能够更改所述远程本地Windows帐户的密码。

是的,我知道Active Directory是为这种事情而构建的,但是不幸的是,更高版本已下令以这种方式进行操作(因此,也无需针对数据库中的用户进行身份验证)。

我试过像这样使用DirectoryEntry和WinNT:

DirectoryEntry user = new DirectoryEntry(String.Format("WinNT://{0}/{1},User",
           serverName, username), username, password, AuthenticationTypes.Secure)

但是,当您尝试登录多个用户时,这会导致异常:

不允许同一用户使用多个用户名与服务器或共享资源建立多个连接。 断开与服务器或共享资源的所有先前连接,然后重试。

我已经尝试确保我的DirectoryEntries在using块内使用,因此可以正确处理它们,但这似乎无法解决问题。 另外,即使这样做确实可行,两个用户也可能同时击中该行代码,并因此尝试创建多个连接,因此无论如何它都是脆弱的。

是否有更好的方法来对远程计算机上的本地Windows帐户进行身份验证,对它们的组进行授权并更改其密码?

感谢您的帮助。

我认为您不能通过ASP.Net脚本执行此操作。 因为您需要从服务器知道所有客户端计算机将访问您的页面的内容,并向服务器提供足够的权限来访问客户端以执行此额外的用户身份验证和密码更改。 这也很麻烦。 一种解决方案是使用ActiveX控件并在该ActiveX控件中编写此逻辑(用户身份验证和密码更改),并在客户端中为ActiveX控件提供足够的权限。 这有点丑陋,但这是没有ADS的唯一可能的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM