Node使用activedirectory2对接AD能否传哈希密码?TLS1.3传明文安全吗?
Active Directory 身份校验问题解答
能否将密码哈希值传递给AD完成校验?
AD原生并不支持直接接收外部传入的用户密码哈希值完成身份校验,你找不到对应功能的Node模块是正常情况,这并非社区模块能力缺失,而是Active Directory本身的安全机制限制:
- AD内置的LDAP简单绑定、NTLM、Kerberos等认证流程,均要求基于原始明文密码生成校验凭据,或是直接在加密的LDAPS通道内传递明文密码完成校验,没有对外暴露接收外部预计算哈希做比对的接口
- 如果强行想要基于哈希校验,你需要拿到AD域中存储的用户密码哈希库做本地比对,这一操作本身需要极高的AD权限,且属于严重违反企业安全规范的行为,完全不推荐
可落地的替代方案如下:
- 改用Kerberos认证流程:前端无需传递用户密码,走标准Kerberos协商流程,后端拿到认证票据后向AD完成校验,全程不会出现明文密码传输
- 前端新增非对称加密层:前端用后端提前下发的RSA公钥对用户输入的密码单独加密后再传输,后端用私钥解密出明文后再调用
activedirectory2的authenticateUser方法,相当于在TLS层之外额外新增一层密码专属加密 - 对接AD联邦认证能力:如果企业AD已经部署了AD FS等身份提供商服务,可直接对接OIDC/OAuth2授权码流程,全程无需你的系统接触用户密码
通过TLS 1.3传输明文密码是否足够安全?
在服务端TLS配置正确的前提下,安全性可以满足绝大多数企业内部系统的要求:
- TLS 1.3完全修复了旧版本TLS的已知安全漏洞,握手阶段全程加密,杜绝了降级攻击、明文窃听的可能,只要你部署的是受信任的合法CA证书,传输过程中的密码不可能被第三方窃取
- 该方案的风险点不在传输层,而在前后端的运行环境:如果前端存在XSS漏洞,用户输入的明文密码会在本地被恶意脚本窃取;如果后端日志、内存数据被泄露,解密后的明文密码也可能外泄,这些风险和传输层协议无关
内容的提问来源于stack exchange,提问作者Ven
相关产品推荐
相关产品推荐

