Apache HTTPD:NTLM认证
NTLM是Windows环境下的单点认证机制,在Windows域环境下较为方便。如果服务器不在域中,会自动使用服务器的本机账户尝试登录。NTLM依靠Windows,它没有独立实现,必须依赖一个具体的协议,比如HTTP(NTLM over HTTP)。注意,NTLM只是一个认证协议,如果要保证信息不被他人看到,请另外使用SSL。
其认证过程有3步:
协商:确定协议版本。
质询:服务器和客户端交换身份信息。
验证:服务器向自身或域控制器(Domain Controller,DC)验证客户端的身份。
详细步骤如下:
客户端尝试登录,计算用户输入密码的摘要,然后丢弃密码,将用户名发送给服务器,启动认证流程。
服务器发回一个16字节随机数挑战(Challenge),要求客户端加密该随机数。
客户端使用密码的摘要加密Challenge(加密算法是HMAC-MD5),将结果发回服务器。
如果服务器不在域环境里面,就通过本机的安全账户管理器数据库(Security Account Manager Database,SAM)查找用户,同样计算一遍加密Challenge。两者相同,则说明用户合法。如果服务器在域环境里面,上面的工作会被转发给DC完成。
在Apache HTTPD上,可以使用mod_authn_ntlm模块提供NTLM认证服务,配置如下: