有没有可以使用的命令行程序?
我认为问题应该扭曲。 Active Directory支持Kerberos和NTLM。 Windows将首先尝试使用Kerberos,如果不满足所有要求,则将回退到NTLM。
我会给你举例,像\ server1 \ share这样的名称访问文件共享将调用Kerberos,并应给予适当的权限。 但是,使用IP地址访问相同的文件共享将首先调用Kerberos并失败(因为没有IP地址的SPN),然后故障转移到NTLM。
因此,请确定您的程序如何尝试对AD进行身份validation,并且应该告诉您正在使用哪个协议。
我会好奇的知道,是什么促使你问这个问题。
您可以查看活动Kerberos票证的列表,以查看是否有一个感兴趣的服务,例如通过运行klist.exe 。
如果你破解registry,还有一种方法可以loggingKerberos事件。
您应该真正审计login事件,无论计算机是服务器还是工作站。 确定哪些用户正在访问您的系统以及解决与安全相关的问题很有帮助。
您可以使用组策略修改审核策略:开始…运行… gpedit.msc …计算机configuration,Windows设置,安全设置,本地策略,审核策略,“审核login事件”。 选中“成功”和“失败”checkbox。 尝试注销并login,在Windows安全事件日志中查看一些典型的540事件。
Netstat显示所有侦听的TCP和UDP连接。 使用选项-na是用于所有连接,并且不分辨名称或端口。 'b'选项是显示与之相关的程序。 如果DNS正在运行,它可能会显示大量的其他连接,所以你可能也想指定TCP。
如果Kerberos是一个部署Active Directory域控制器,则Kerberos是最明确的运行。
netstat -nab
假设您正在审核login事件,请检查您的安全事件日志并查找540个事件。 他们会告诉你是否使用Kerberos或NTLM进行特定的身份validation。
public string FindAllUsers() { string strReturn=""; try { DirectoryEntry directoryEntry = new DirectoryEntry("WinNT://" + Environment.UserDomainName); string userNames = ""; string authenticationType = ""; foreach (DirectoryEntry child in directoryEntry.Children) { if (child.SchemaClassName == "User") { userNames += child.Name + Environment.NewLine; //Iterates and binds all user using a newline authenticationType += child.Username + Environment.NewLine; } } strReturn = userNames + "\n\n" + authenticationType; //Console.WriteLine("************************Users************************"); //Console.WriteLine(userNames); //Console.WriteLine("*****************Authentication Type*****************"); //Console.WriteLine(authenticationType); } catch (Exception) { Console.WriteLine("Network error occured."); strReturn = ""; } return strReturn; }
你可以试试这个工具。 http://blog.michelbarneveld.nl/media/p/33.aspx
这是一个在网站上testing身份validation的工具。 它将显示使用的authenticationtypes:Kerberos,NTLM,basic,none。 但它也显示其他信息,如:使用的SPN,HTTP标头,解密的NTLM和Kerberos授权标头。 它也可以显示和删除您的Kerberos票证。
取决于涉及的客户端/服务器。 例如,有一个网页(对不起,现在没有时间search),你可以把它放在一个网站上,告诉你是否使用了Kerberos或NTLM。 但是我知道没有办法告诉SQL服务器使用了什么authentication方法。 尽pipe之前已经被统计过,安全日志可能会告诉你。
你为什么试图找出?