问题标签 [ntlm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1936 浏览

iis-7 - NTLM 身份验证仅在针对 2k8 IIS7 反向代理后面的 2k8 应用服务器的 IE 上失败

我正在为使用 Windows/NTLM/WIA/任何身份验证的 Intranet 站点开发 ASP.NET 应用程序。该应用程序托管在 Windows 2k8 服务器上,但在另一台 2k8 机器上使用 IIs7 通过反向代理访问。

身份验证在 FireFox、Chrome 和 Safari 中运行良好,但在 IE8 中失败。如果我绕过代理并直接访问应用程序服务器,那么它工作正常,所以它与代理有关。

3 台机器中的任何一台的事件查看器中都没有任何内容可以指示可能发生的情况。

如果您使用 IE8 连接,它会提示您输入凭据,而不是自动传递它们,是的,我已经在域信任之上设置了显式信任,但它仍然会出错,并从代理返回 401 错误。

任何想法从哪里开始解决这个问题?

0 投票
1 回答
1695 浏览

asp.net - ASP.NET 中的端到端 kerberos 委托身份验证

我正在尝试设置一个内部网站,该网站将使用 HttpWebRequest 代表用户联系网络中的另一个后端服务。我必须在 ASP.NET 应用程序上使用集成 Windows 身份验证,因为后端系统只支持这种类型的身份验证。

我能够在 ASP.NET 应用程序上设置 IWA,并且它使用了我期望的 kerberos。但是,当将身份验证委托给后端系统时,它就不再起作用了。这是因为后端系统仅支持 kerberos IWA,但由于某种原因委托 - 即使传入请求是经过 kerberos 身份验证的 - 在转发到后端系统之前将身份验证转换为 NTLM。

有人知道我需要在 ASP.NET 应用程序上做什么才能允许它使用 kerberos 转发身份吗?

我尝试了以下方法,但似乎不起作用

我还尝试将“Kerberos”设置为现在显示“协商”的位置,但它似乎没有多大作用。

0 投票
2 回答
29545 浏览

python - Python 中的 NTLM 身份验证

我正在尝试使用 python 从 Windows 7 在 IIS (Windows Server 2003) 上实现 NTLM 身份验证。LAN Manager 身份验证级别:仅发送 NTLM 响应。
客户端机器和服务器在同一个域中。
域控制器 (AD) 位于另一台服务器上(也运行 Windows Server 2003)。

我收到 401.1 - 未经授权:由于凭据无效,访问被拒绝。您能否帮我找出这段代码有什么问题和/或向我展示解决此问题的其他可能方向(使用 NTLM 或 Kerberos)?

sspi.py 可在此处获得: https ://ironpython.svn.codeplex.com/svn/IronPython_Main/External.LCA_RESTRICTED/Languages/IronPython/27/Lib/site-packages/win32/lib/sspi.py

谢谢!

0 投票
2 回答
11066 浏览

java - Apache Axis2 1.5.1 和 NTLM 身份验证

我已经浏览了 StackOverflow 上关于 NTLM 和 Java 的所有讨论,但我似乎找不到答案。我会尝试更具体。

这是一些返回客户端存根的代码(我希望)为 NTLM 身份验证配置:

这将返回一个有效的 SerivceStub 对象。当我尝试在存根上调用调用时,我在日志中看到以下内容:

有没有人有这个问题的解决方案?

0 投票
2 回答
5004 浏览

windows - 在 apache/Linux 服务器上自动验证 windows 用户

如果我想在用户浏览到 Linux 服务器上运行 apache 的站点时向 AD 验证 Windows 帐户,则通常有以下几种情况:  

  • 项目清单
  • mod_ntlm(我在很久以前使用过)- 2003 年的最后一次更新
  • mod_auth_ntlm_winbind - 最后更新于 04/2007
  • mod_auth_kerb - 2008 年 12 月最后一次更新

让这些中的任何一个与最近的、完全修补的 Windows 2000 AD 服务器一起工作都没有运气。

你有任何关于有效食谱的线索吗? 

-彼得

- 更新

我当前的构建环境是这样的:

  • 操作系统:Ubuntu Lucid
  • Apache 2.2.14(来自回购)

我从源代码重新编译的身份验证模块。

0 投票
1 回答
1751 浏览

python - Django 进行自己的 NTLM 身份验证(HTTP 标头和所有)

我正在考虑从 Apache 迁移到 Lighttpd,用于使用 python 编写的内部 Web 应用程序。问题是我依赖于 libapache2-mod-auth-ntlm-winbind ...这实际上似乎不是一个很好的支持和更新的软件包(尽管这可能是因为它确实运行良好)。

我正在寻找有关使用 django 本身处理 HTTP 身份验证所需的建议和提示。这将使我能够与网络服务器无关,并可能成为一次伟大的学习经历。

一些热点问题:

  1. 让自定义应用程序执行真正的 HTTP 身份验证是否合理?
  2. 在不提示用户输入密码的情况下,将我的 python 代码连接到 Windows 域控制器以进行这种身份验证涉及到什么程度?
  3. NTLM 是否提供对用户详细信息和组成员资格的任何访问权限,以便我可以停止通过 LDAP 与 Windows 域控制器的另一个连接进行搜索?

我希望能够编写一个模块来简化可以与社区共享的这种技术。

0 投票
3 回答
8443 浏览

authentication - 安全 Web 服务 (NTLM) - Jmeter

我正在尝试使用 Jmeter 测试 Web 服务。Web 服务受 NTLM 身份验证(Windows)的保护。我可以使用WebService(SOAP) Request采样器加载 WSDL。目前,它仅在我将代理服务器与此SO 答案中提到的BurpSuit 一起使用时才有效(而不是 SOUP UI,我将 Jmeter 与 BurpSuite 一起使用)。

但是我不想使用代理服务器,而是想直接在 Jmeter 中使用带有 NTLM 身份验证的 Web 服务。我已经尝试过HTTP Authentication Manager使用 ntlm 身份验证。但它仍然给出401 Authorization Required了回应

谢谢您的帮助。

采样器结果。

和响应

0 投票
3 回答
326 浏览

git - 从 NTLM 防火墙内向 github 提交代码的最佳选择是什么?

我正在考虑使用 github 来更好地组织我的一些代码项目(我的任务是在 c、c#、js、golang 和 ruby​​ 中实现所有主要的加密算法 - 但这是另一个故事......) .

但我被困在 NTLM 防火墙后面。关于如何检查代码的任何建议?tortoisegit 和 ntlmaps 的某种配置可以通过防火墙工作?我什至很乐意通过网络表单上传代码,尽管我认为 github 不是这样工作的。

谢谢大家

0 投票
1 回答
2117 浏览

c# - NegotiateStream 不能与 Kerberos/NTLM/GSSAPI over SASL (POP3/IMAP/SMTP) 一起使用?

我正在尝试获取集成 Windows 身份验证(使用当前登录的 Windows 用户的默认凭据)以登录 Exchange 2007 帐户(SMTP/POP3/IMAP)。

我已经为此实现了工作,但它使用 SSPI 函数,因此需要非托管代码权限(不好)。我试图为此使用 NegotiateStream 类,但它不起作用。

您不能直接将 NegotiateStream 与 POP3/IMAP/SMTP 一起使用,因为整个对话中的每个请求和响应都需要用 base64 包装并包含邮件协议后缀等。所以,我实现了自己的流类,它可以做到这一点,并在 NetworkStream 和 NegotiateStream 之间注入它。但是,我注意到 NegotiateStream 创建的请求和它期望的响应与我成功使用的请求不同(以及由其他能够进行 NTLM/GSSAPI 类型身份验证的邮件客户端创建的请求)。

特别是,NegotiateStream 首先发送一个 5 字节长度的请求,其他实现不发送该请求。此数据包被 Exchange 拒绝并显示“协议错误”消息。

NegotiateStream 创建的第二个请求是正确的(以 NTLMSSP 开头)。因此,我决定忽略 base64 编码中间流中的第一个数据包而不发送它。当 Exchange 获得第二个数据包时,它成功地吃掉了这个数据包并返回正确的继续响应。但是,这一次 NegotiateStream 现在想要接收 5 字节的响应,而服务器返回的响应要大得多。简而言之,NegotiateStream 发送 +1 请求并期望 +1 响应。

我可以避免发送第一个“冗余”5 字节数据包,但我无法发明 NegotiateStream 期望的第一个 5 字节响应数据包。我尝试提供 NegotiateStream 之前尝试发送的相同数据包,但这当然没有用。

我想知道发生了什么以及如何解决这个问题。在 Windows XP SP3 和 Windows Server 2008 上也会发生相同的行为。

我不是 Kerberos/GSSAPI 专家,但从我在文档中发现的内容看来,Kerberos 对话确实应该以 5 字节数据包开始。但是,我在使用其他工作工具时从未见过它,Exchange 也拒绝它。也许,当通过 SASL 协议使用 GSSAPI(用于 POP3/IMAP/SMTP 进行身份验证)时,应该省略第一个数据包?但是,当它期望来自服务器的 5 字节响应时,我如何告诉 NegotiateStream 或者至少应该向它发送什么?

我尝试了不同的 NegotiateStream 模式,我还向 Exchange 发布了 AUTH NTLM 和 AUTH GSSAPI 但这一切都没有区别。其他工作实现(同时支持 GSSAPI 和 NTLM)都以相同的方式工作(GSSAPI 和 NTLM 数据包之间没有太大区别)。所有传入和传出的数据包都远大于 5 个字节。

我还尝试在 Windows XP 上使用 IIS SMTP 服务,结果相同。基于 SSPI 的非 NegotiateStream 实现工作,而 NegotiateStream 由于第一个数据包而不起作用。如果我不发送它,我不知道 NegotiateStream 期望的第一个响应是什么。

我曾经认为应该可以让它工作,因为 SmtpClient 类可以以某种方式管理它并使用默认凭据和 NTLM 进行身份验证。但是我发现 SmtpClient 内部没有使用 NegotiateStream,它只是进行非托管 SSPI 调用,就像我在旧版本的软件中所做的那样。

也尝试使用 Visual Studio 2010 / .NET 4.0。没有运气(也没有新的方法/属性来微调 NegotiateStream 中的东西)。

我完全迷路了:-(

0 投票
2 回答
3597 浏览

python - 如何使用 Python 连接到 Microsoft Dynamics CRM 服务器?

Microsoft Dynamics CRM 服务使用 NTLM 身份验证,这使得使用 suds 从 python 进程连接到它有点复杂。我正在寻找一个代码示例,它将:

  1. 发送和接收来自RetrieveAttributeRequest
  2. 发送和接收Execute请求的响应。

这必须使用 Python 2.6 或 Python 2.7,而不是 Python 3。我已经有一个使用 curl 来执行此操作的工作实现,但它在最好的时候是不稳定的,作为我在这个工具中的其他一些工作的一部分,我会喜欢清理它并使用 python/suds 使其运行。