如何在 Active Directory 中使用 NTLM 身份验证

我正在尝试在我们的一个内部站点上实施 NTLM 身份验证,并且一切正常。我没有解决的一个难题是如何从 NTLM 获取信息并通过 Active Directory 进行身份验证。

有一个对 NTLM 的良好描述用于密码的加密,我用来实现这个,但我不确定如何验证用户的密码是否有效。

我正在使用 ColdFusion,但此问题的解决方案可以使用任何语言(Java、Python、PHP 等)。

编辑:

我在 Redhat Enterprise Linux 上使用 ColdFusion。不幸的是,我们无法使用 IIS 来管理它,而必须为此编写或使用第三方工具。

<小时>

更新 - 我开始工作了,这就是我所做的

我使用了来自 samba.org 的 JCIFS 库。

请注意,以下方法仅适用于 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>

现在所有匹配 /admin/* 的 URL 都需要 NTLM 身份验证。

请先 登录 后评论

1 个回答

Portman

嗯,我不确定你想要完成什么。

通常在内部站点上实现 NTLM 就像在 IIS 网站属性的“目录安全”选项卡中的“身份验证和访问控制”中取消选中“启用匿名访问”一样简单。如果它被清除,那么您的 Web 应用程序用户将看到一个弹出的 NTLM 对话框。

您无需编写任何与 Active Directory 交互的代码。 IIS 负责为您进行身份验证。

你能更具体地说明你想要做什么吗?

请先 登录 后评论