问题标签 [negotiate]

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 投票
3 回答
9829 浏览

kerberos - 我可以向客户端表明支持 SPNEGO 但 NTLM 不适用于 HTTP 请求吗?

我目前知道的微软使用的两个 WWW-Authenticate 添加是

  • NTLM
  • 谈判

如果从服务器发送 Negotiate,将根据一组条件使用 Kerberos

  • 内网区
  • 使用主机名而不是 IP 访问服务器
  • 已启用 IE 中的集成 Windows 身份验证,主机在 Firefox 中受信任
  • 服务器不是浏览器本地的
  • 客户端的 Kerberos 系统通过域控制器的身份验证

然后将在服务器和客户端之间尝试 Kerberos,如果不满足上述条件,则将尝试 NTLM。

我的问题是,服务器是否有某种方法可以指示不应发送 NTLM?我目前通过跟踪会话中的请求来处理这个问题,如果收到 NTLM 消息,它会在会话的剩余时间内禁用 Kerberos 和 WWW-Authenticate。

0 投票
10 回答
288815 浏览

wcf - WCFTestClient HTTP 请求未经授权,客户端身份验证方案“匿名”

我创建了一个 WCF 服务并将其部署在服务器上。当我浏览此服务时,它会使用 ?wsdl URL 给我积极的响应。现在我正在尝试通过 WCF 测试客户端测试服务。它显示正确的元数据。但是当我尝试从服务中调用任何方法时,它会向我显示一个异常......这里是带有堆栈跟踪的错误详细信息......

HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“协商,NTLM”。

服务器堆栈跟踪:


System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication(HttpWebRequest request, HttpWebResponse response, WebException responseException, HttpChannelFactory factory)
客户端身份验证方案“匿名”的 HTTP 请求未经授权。从服务器收到的身份验证标头是“协商,NTLM”。

服务器堆栈跟踪:


System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication(HttpWebRequest 请求,HttpWebResponse 响应,WebException responseException,HttpChannelFactory 工厂)

客户端绑定:

服务器绑定:

客户的客户部分:

服务器服务部分:

0 投票
1 回答
2461 浏览

authentication - 如何让 NegotiateStream 使用 Kerberos?

问完这个问题后,我一直在尝试使用 NegotiateStream 针对 Java 服务器对 Windows 客户端进行身份验证。Java 似乎没有很好的 NTLM 库支持,所以我一直在假设我必须使用 Kerberos,Java 似乎支持得更好(通过 GSS-API)。

问题是 NegotiateStream 似乎每次都在尝试使用 NTLM。文档建议它可以使用任何一种,但没有指定它是如何选择的。我在 API 中看不到任何选项来控制它选择的机制。有办法吗?

我有一个服务主体名称,我的客户端代码如下所示:

在服务器端,收到的第一组字节是 22、1、0、0、59,然后是“NTLMSSP”——这是我没想到的。

我已经为 SPN 字符串尝试了几种不同的格式,但不确定正确的格式是什么。我最初用

setspn -L 成功将其列为:

我做错了什么,还是完全误解了这些东西?:)

0 投票
1 回答
266 浏览

dns - 在多个域中配置 kerberose-sso-negotiate

我有 mycorp.com、ch1.mycorp.com、mycorp2.com 域(都是 Windows) 我正在配置 sso-kerberose-negotiate 身份验证 我的服务器在 mainaaa3.mycorp2.com 中运行,我创建了 spn "http:/mainaaa3 .mycorp2.com”,并且我已经在域之间设置了信任,但是如果来自 mycorp.com、ch1.mycorp.com 域的用户不发送协商票,那么我在每个域中为“ http://mainaaa3.mycorp2.com”,现在我有错误:机制级别:解密字段的完整性检查失败(31)

我究竟做错了什么?

0 投票
1 回答
200 浏览

firefox - 在安装前或使用附加组件更改 Firefox 属性

我目前正在编写有关设置特殊服务器环境的文档。要将此环境与 firefox 一起使用,需要在 firefox 的 about:config 窗口中更改一项属性。

我们的客户拥有庞大的网络,但他们无法为该网络中的数百台计算机做到这一点。我现在正在寻找一种解决方案来轻松配置network.negotiate-auth.trusted-uris必须完全防白痴的属性。此属性与 Kerberos 身份验证相关。

我想制作一个已经包含该属性的特殊安装包,或者提供一个附加组件或类似的东西。(有没有简单的方法可以做到这一点?)

或者有没有更优雅的方法来设置 Firefox 以与 kerberos 一起正常工作?

有什么建议么?

0 投票
1 回答
1579 浏览

http - 仅当协商失败时如何从协商方法回退到基本方法

我有一个 web 应用程序,它也执行 kerberos 和基本身份验证。我不知道客户有什么能力。所以这两种身份验证机制都是在 401 回复中发送的。

回复标头将包含,

但是,我希望客户端只有在协商失败时才回退到基本身份验证。

我想要的流程应该是这样的,

  1. 客户端请求
  2. 服务器响应 WWW-Authenticate: Negotiate
  3. 客户端重新请求(使用错误的身份验证数据或某些标志表明它无法继续)
  4. 服务器再次使用 WWW-Authenticate: Basic realm="MYREALM" 响应
  5. 客户端进行基本身份验证。

我怎样才能做到这一点?我修改了服务器代码来做到这一点。但是不在任何域中的浏览器(它应该进行基本身份验证)在第 2 步之后没有响应。

0 投票
4 回答
35658 浏览

.net - 如何从 WWW-Authenticate: Negotiate header 中查找是否使用了 NTLM 或 Kerberos

我正在.Net 中编写一个通过HTTP 与服务器通信的客户端应用程序。

在 NTLM 和 Kerberos 授权的情况下,我需要设置不同的请求缓冲选项。

如何确定是否使用了 NTLM 或 Kerberos?是否有可能以某种方式解码“WWW-Authenticate: Negotiate”标头?

0 投票
3 回答
5383 浏览

c++ - 用于 NTLM 身份验证的 GSSAPI

是否可以使用 GSSAPI 进行 NTLM v1/v2 身份验证?我正在尝试构建一个 Web 服务器,非常像 squid / apache,但我想使用 NTLM / Negotiate 协议对可能使用 IE / FireFox 的客户端进行身份验证。我尝试使用 heimdal 库,但根本无法让 gss_accept_sec_context 工作。它只是因“请求了不受支持的机制”而失败。我可以确认,在尝试 gss_accept_sec_context 之前调用 gss_acquire_cred 时,服务主体名称、spnego 的 OID 等确实正确发生。是的,当然,我通过 base64 解码授权标头提取了从客户端收到的令牌。我正在使用 C++,并在 debian 上进行试验。我相信这里有一位出色的黑客知道更多,希望能分享一些重要的线索。

提前致谢。

0 投票
1 回答
2623 浏览

iis - HTTP 请求未经客户端身份验证方案“协商”授权

我已经花了很多时间试图找出问题所在。从桌面控制台应用程序使用 WCF 服务时出现此错误。从带有 silverlight 客户端的浏览器访问时,该服务运行良好。

错误信息:

System.ServiceModel.Security.MessageSecurityException:HTTP 请求未经客户端身份验证方案“协商”的授权。从服务器收到的身份验证标头是“协商,NTLM”。

我不明白为什么即使客户端和服务器都具有相同的身份验证方案“协商”,它也不起作用。我收到 HTTP 401。

我验证了客户端和服务器配置是正确的,因为它在使用相同客户端配置的 silverlight 客户端中工作。

IIS7 网站使用提供程序“协商,NTLM”配置了 Windows 身份验证。

那么,这个错误信息是什么意思呢?:(

0 投票
2 回答
1677 浏览

c++ - gss_init_sec_context 返回未找到凭据缓存(Windows、C++)

我尝试在我的应用程序中使用 gssapi32.dll 但在应用程序启动时收到异常

像“HTTP/proxy.domain.com@domain.com”这样的名称我在 Kerberos Ticket Tools 中看到了这个名称

但我收到“未找到凭据缓存”

也许有人已经有类似的问题?并且可以提供帮助

Windows 7 (x64) MSVS C++ 2010 速成版

谢谢你的建议,对不起我的英语

-- 编辑谢谢你的朋友 - 我想我会继续建议的方式