使用特定计算机对域进行身份validation?

背景

我们正在转换到基于声明的auth在我们的应用程序中(在.NET 4.5上)我们目前通过Asp.net成员身份和域身份validation正常工作。

域部分看起来像这样(概括一点):

var context = new PrincipalContext(ContextType.Domain, ADDomainName); return context.ValidateCredentials(username, password); 

问题/目标

有时我们(或我们使用的一些顾问)使用的机器可以看到我们的域服务器,但不是我们域的成员。

从不在域上的计算机上测试应用程序,而不是必须启动域中的计算机以进行检查,这将是一个很大的帮助。

有没有办法从不在域上的计算机上对域控制器执行域身份validation? 到目前为止,我还没有找到任何研究。

您可以使用LDAP身份validation并指定代码中的凭据:

 using(var context = new PrincipalContext(ContextType.Domain, "mydomain", @"mydomain\serviceAcct", "serviceAcctPass")) { //Username and password for authentication. return context.ValidateCredentials(username, password); } 

或者,在runas /netonly下运行身份validation服务器,这样您就可以使用加入计算机的工作组中的域网络凭据运行

 rem if your server is standalone runas /netonly /user:mydomain\consultantaccount C:\dev\sts\ipsts.exe rem or you can have it in IIS Express: runas /netonly /user:mydomain\consultantaccount "iisexpress /path:c:\dev\sts\ /port:9090 /clr:v2.0" 

我会注意到我实际上没有检查/netonly是否会在这种情况下工作,所以如果你最终尝试它,我会有兴趣听听它是否有用。