Background
我们正在应用中过渡到基于声明的身份验证(在 .NET 4.5 上)我们目前通过 Asp.net 成员资格和域身份验证进行身份验证可以正常工作。
域部分如下所示(稍微概括一下):
var context = new PrincipalContext(ContextType.Domain, ADDomainName);
return context.ValidateCredentials(username, password);
问题/目标
有时,我们(或我们使用的一些顾问)使用可以看到我们的域服务器但不是我们域成员的计算机进行VPN连接。
从不在域中的计算机测试应用程序将有很大帮助,而不必启动域中的计算机进行检查。
问题
有没有办法从不在域中的计算机上对域控制器执行域身份验证? 到目前为止,我还没有找到任何关于它的研究。
您可以使用 LDAP 身份验证并从代码中指定凭据:
using(var context = new PrincipalContext(ContextType.Domain, "mydomain", @"mydomainserviceAcct", "serviceAcctPass"))
{
//Username and password for authentication.
return context.ValidateCredentials(username, password);
}
或者,在 runas /netonly
下运行身份验证服务器,这样您就可以使用加入工作组的计算机中的域网络凭据运行
rem if your server is standalone
runas /netonly /user:mydomainconsultantaccount C:devstsipsts.exe
rem or you can have it in IIS Express:
runas /netonly /user:mydomainconsultantaccount "iisexpress /path:c:devsts /port:9090 /clr:v2.0"
我会注意到,我还没有真正检查/netonly
在这种情况下是否有效,所以如果你最终尝试它,我很想听听它是否有效。