小编Kha*_*aid的帖子

Windows可执行文件身份验证

在搜索Windows身份验证方法和协议之后,我决定在使用IIS和Web身份验证之前了解简单可执行文件中使用的Negotiate,Kerberos和NTLM之间的确切区别.

我达到了很好的效果,但我还需要有关Negotiate和Kerberos的更多细节.

我有以下场景:

我创建了非常简单的C#窗体表单应用程序,它显示了一个消息框显示的值:

System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType
Run Code Online (Sandbox Code Playgroud)

请注意,我是在本地计算机上具有管理员权限的域用户,我有以下结果:

  1. 当我在主动连接到DC时运行exe文件(双击)时,我得到了"Negotiate".

  2. 当我运行exe文件(作为varynet用户/使用本地用户运行),而我主动连接到DC时,我得到了"NTLM".

  3. 当我使用"以管理员身份运行"或"以不同用户身份运行"运行exe文件时,我得到了"Kerberos".

  4. 当我使用本地帐户本地登录时运行exe文件时,我得到了"NTLM".

我知道LSA会将NTLM用于本地帐户.另外我知道Active Directory使用Kerberos来验证域用户和计算机.

我的问题是,当我使用我的帐户(双击)或使用我的同一帐户"以不同用户身份运行"运行exe时,为什么我会获得协商身份验证类型?

更新:我注意到以下内容:

- 如果本地用户正在运行exe,那么它是NTLM
- 如果域用户运行exe然后它是Negotiate(如果该用户是本地管理员)但是是Kerberos(如果该用户不是本地管理员) )
- 如果域管理员运行exe,那么它是Kerberos

我只是澄清了这种行为.

ntlm kerberos windows-authentication windows-security negotiate

8
推荐指数
1
解决办法
825
查看次数