我正在尝试在我们的一个内部网站上实现NTLM身份验证,一切正常.我没有的一个难题是如何从NTLM获取信息并使用Active Directory进行身份验证.
有一个很好的描述NTLM和用于密码的加密,我用来实现这一点,但我不知道如何验证用户的密码是否有效.
我正在使用ColdFusion,但是这个问题的解决方案可以是任何语言(Java,Python,PHP等).
编辑:
我在Redhat Enterprise Linux上使用ColdFusion.不幸的是,我们不能使用IIS来管理它,而是必须为此编写或使用第三方工具.
更新 - 我得到了这个工作,这就是我做的
请注意,以下方法仅适用于NTLMv1,并且不适用于NTLMv2.如果您无法使用NTLMv1,您可以尝试Jespa,它支持NTLMv2但不是开源,或者您可以使用Kerberos/SPNEGO.
这是我的web.xml:
<web-app>
<display-name>Ntlm</display-name>
<filter>
<filter-name>NtlmHttpFilter</filter-name>
<filter-class>jcifs.http.NtlmHttpFilter</filter-class>
<init-param>
<param-name>jcifs.http.domainController</param-name>
<param-value>dc01.corp.example.com</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.domain</param-name>
<param-value>CORP.EXAMPLE.COM</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NtlmHttpFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
现在所有匹配的URL /admin/*都需要NTLM身份验证.