- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我了解基本身份验证和摘要身份验证。但我已经搜索了很多,而且我正在为 NTLM、身份验证和协商而苦苦挣扎。
我认为,如果我错了,请纠正我,NTLM 和 Authenticate 是同一协议(protocol)的两个术语。
协商首先尝试 NTLM,然后回退到消化,然后回退到基本连接。
这样对吗?如果是的话,哪里有一个很好的例子说明如何在 C# 中连接仅用于 NTLM 和协商。
我有两个用例。首先是我需要下载一个文件。所以发出一个请求,得到一个 XML 文件作为响应,读下来,完成。
第二个是查询 OData,因此有成百上千个 Web 请求,每个请求都将提供 JSON(或 XML)作为响应。
最佳答案
Microsoft Negotiate is a security support provider (SSP) that acts as an application layer between Security Support Provider Interface (SSPI) and the other SSPs. When an application calls into SSPI to log on to a network, it can specify an SSP to process the request. If the application specifies Negotiate, Negotiate analyzes the request and picks the best SSP to handle the request based on customer-configured security policy.
https://learn.microsoft.com/en-us/windows/desktop/secauthn/microsoft-negotiate
正如文章 Negotiate does not fall back to digest 中给出的那样。在某种程度上,协商类似于 Kerberos,但具有 NTLM 的默认备份
Currently, the Negotiate security package selects between Kerberos and NTLM. Negotiate selects Kerberos unless it cannot be used by one of the systems involved in the authentication or the calling application did not provide sufficient information to use Kerberos.
Windows Challenge/Response (NTLM) is the authentication protocol used on networks that include systems running the Windows operating system and on stand-alone systems.
Authenticate 只是一种内部方法,不确定您为什么会对它和协议(protocol)感到困惑,在这里仔细看看内部结构:https://blogs.msdn.microsoft.com/dsnotes/2015/12/30/negotiate-vs-ntlm/
看待这个问题的方式是:
编辑 1: 在 RFC 4559 中正式将这些身份验证机制应用于 Web .
编辑 2: NTLM 验证一个连接,而不是一个请求,而其他验证机制通常验证一个请求。在第一个用例中,这不应该有太大变化,但对于第二个用例,在保持单个连接的同时尝试 NTLM 是有意义的(通过使用 HTTP Keep-Alive,并在第一个请求中仅发送一次凭据)。可能存在性能差异。让我们了解您的最新结果。
取自 Microsoft docs 的示例 WebRequest 代码,您可以将 Webrequest 替换为 HttpWebRequest。
// Create a request for the URL.
WebRequest request = WebRequest.Create(
"http://www.contoso.com/default.html");
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials;
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
Console.WriteLine (((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Console.WriteLine(responseFromServer);
// Clean up the streams and the response.
reader.Close();
response.Close();
关于c# - 什么是 NTLM/Authenticate/Negotiate Web 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55348267/
好吧,我已经阅读了我能找到的与此错误有关的每个线程和问题,但令人惊讶的是没有找到解决方案。我试图在 IIS 托管的 WCF 服务 (.NET 4.0) 上要求 Windows 身份验证,到目前为止,该
我想对浏览器发送到网站的 Accept_Language 使用react。 有人知道我在哪里可以获得浏览器可能发送到网站的所有可用 Accept_Languages 的可靠列表吗? 非常感谢! 最佳答
我的应用程序中有套接字通知,当我在本地运行时效果很好,但是当我部署到我的 VM 时,它提示给出以下消息。 Error: Error during negotiation request. at
我正在尝试访问受密码保护的站点。它没有使用基本身份验证(即使在 Firefox 中弹出相同的用户/密码框),因为响应 header 是 WWW-Authenticate: Negotiate . 我想
我正在尝试使用 JSch (0.1.44-1) 通过 ssh 连接到远程 sftp 服务器,但在 session.connect(); 期间,我收到此异常: com.jcraft.jsch.JSchE
我正在尝试使用 Loopback为我现有的数据库创建一个 api。当我尝试“发现”模型时,出现此错误: Message: Cannot find module 'negotiator' Request
我正在尝试使用 JSch (0.1.44-1) 通过 ssh 连接到远程 sftp 服务器,但在 session.connect(); 期间我收到此异常: com.jcraft.jsch.JSchEx
这是我使用paramiko的代码: #!/usr/bin/env python from paramiko.client import SSHClient from paramiko.client
我尝试上传应用程序,但在此屏幕上等待了 2 小时。我终于收到了应用商店连接错误。错误消息是“应用商店连接无法处理请求。请重试或使用不同的传输方式(1360)”。我该怎么办?? 最佳答案 这是网络问题。
我正在使用 pysftp 下载和上传一些文件。这个完全相同的代码我刚在一个小时前运行并且很好,但现在我得到了这个“EOF during negotiation”错误。我在这里缺少什么? >>> sft
我可以选择支持客户端证书。这就是我设置 Client certificates 的原因至 Accept在 IIS 上。这适用于大多数机器。但是,在某些机器上 IIS 返回 500。这可以通过设置 Cl
我正在尝试使用 Cordova 发布一个新应用程序。我已经确认了证书或配置了东西。我确实遵循“产品”->“存档”->“验证”过程,它成功了,没有错误消息。最后我点击了“Distribution”但是它
我已经使用 Indy 发送电子邮件很多年了,而且它一直运行良好。目前我使用的是 Delphi 10.4,以及它附带的 Indy 版本。 今天,当我尝试使用特定服务器时,即使一切设置都照常进行,我也遇到
我们有超过 100 个客户端站点调用的 WCF 服务。今天我们开始获取 Exception: Server 'http://[url]/services/[service].svc/ws' sent
首先是negotiate , ntlm和 kerberos windows身份验证的三种不同实现方式? IE 发送这个:Authorization: Negotiate YIIFswYGKwYB ..
我了解基本身份验证和摘要身份验证。但我已经搜索了很多,而且我正在为 NTLM、身份验证和协商而苦苦挣扎。 我认为,如果我错了,请纠正我,NTLM 和 Authenticate 是同一协议(protoc
我有Eclipse Juno,这是带有Git服务器的Synology Server DS213 +。我试图将项目从Git Server checkout 到工作区,并且在Eclipse中使用EGit时
我了解基本身份验证和摘要身份验证。但我已经搜索了很多,而且我正在为 NTLM、身份验证和协商而苦苦挣扎。 我认为,如果我错了,请纠正我,NTLM 和 Authenticate 是同一协议(protoc
SignalR 在本地主机上工作,但部署在 Azure 中时不起作用 Asp.net Core 1.0.0(.Net Framework 4.6.1) SignalR.Core 2.2.1 publi
我意识到有很多建议的解决方案可以解决“HTTP 请求未经客户端身份验证方案‘协商’授权。从服务器收到的身份验证 header 是‘协商,NTLM’”,但没有一个对我有用。我相信我继续收到的错误与 II
我是一名优秀的程序员,十分优秀!