You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Windows本地及Active Directory环境下凭据身份验证流程问询

Windows本地及域环境下的身份验证流程解析

嘿,这个问题问得很关键,正好触及Windows身份验证机制的核心,我给你拆解得明明白白:

一、Windows本地机器的身份验证流程

当你在本地登录界面输入用户名和密码后,整个验证流程是这样的:

  • 系统首先会对输入的密码进行哈希处理(默认采用NTLM哈希算法,现在也支持更安全的变体,但本地场景下默认还是NTLM)
  • 接着系统会调取本地的身份验证数据库,查找对应用户名的存储条目,取出其中加密保存的密码哈希值
  • 最后把输入密码生成的哈希和数据库里存储的哈希做比对:如果完全匹配,就授予登录权限;不匹配则直接提示密码错误

二、Windows的本地身份验证数据库

当然有!Windows本地的身份验证核心数据库就是安全账户管理器(SAM)

  • 它的物理存储路径是C:\Windows\System32\config\SAM
  • SAM是加密的数据库,里面存储了本地用户的账户信息、加密后的密码哈希(绝对不能直接读取明文)、权限配置等关键数据
  • 这个数据库受系统严格保护,哪怕是管理员权限也不能直接打开编辑,只能通过「用户账户」控制面板、net user命令或者PowerShell cmdlets这类官方渠道来管理账户

三、接入Active Directory后的身份验证流程

当机器加入AD域后,身份验证体系会切换到域级模式,默认使用Kerberos协议(比NTLM更安全),流程大致如下:

  1. 用户输入域用户名和密码后,本地机器会向域控制器(DC)发送身份验证请求,附带用户的身份标识
  2. 域控制器首先验证该用户是否为域内合法账户,随后生成一个会话密钥票据授予票据(TGT),用用户的密码哈希加密后返回给本地机器
  3. 本地机器用用户输入的密码哈希解密TGT,再用这个TGT向域控制器请求服务票据(ST)——这个票据是用来访问域内特定资源(比如文件服务器、域内其他机器)的凭证
  4. 拿到服务票据后,本地机器就可以和目标资源建立安全会话,完成身份验证
  • 补充:如果Kerberos协议无法正常工作(比如域控制器不可达、DNS解析出错),系统会自动降级到NTLM协议,此时验证逻辑类似本地验证,但验证请求会发送到域控制器的域级账户数据库(也就是AD的核心账户存储)

内容的提问来源于stack exchange,提问作者jasmine

火山引擎 最新活动