【问题标题】:What are the security differences between "NegotiateStream" and "WebRequest" using SPNego/Kerberos?使用 SPNego/Kerberos 的“NegotiateStream”和“WebRequest”之间的安全差异是什么?
【发布时间】:2019-05-22 15:18:52
【问题描述】:

以下链接描述了a traditional intranet client-server 使用 Kerberos 进行套接字通信

public class NegotiateStream : System.Net.Security.AuthenticatedStream
... 
// Request authentication.
NetworkStream clientStream = client.GetStream();
NegotiateStream authStream = new NegotiateStream(clientStream, false); 
...
// Pass the NegotiateStream as the AsyncState object 
// so that it is available to the callback delegate.
IAsyncResult ar = authStream.BeginAuthenticateAsClient(
                  new AsyncCallback(EndAuthenticateCallback), authStream);
... 

另一方面,IIS 能够使用我理解的“Kerberos with SPNego over SSL”进行身份验证...(请更正我的术语!)。

当处于这种 SPNego/SSL/Kerberos 模式时,我无法让 NegotiateStream 工作,但是我能够让 machineaccount$ 正常工作,并将 WebRequest.AuthenticationLevel 设置为 MutualAuthRequired

问题

  • 使用NegotiateStreamWebRequest.AuthenticationLevel 之间的安全区别是什么?

  • 每个解决方案中使用的标准是什么(例如MS-SPNG)?

  • 正在使用哪些 Windows 子系统(SIP、GSS-API 等)?

任何可以帮助我将 Linux 代理集成到此 Kerberos/SpNego 解决方案的信息都是理想的。

【问题讨论】:

    标签: kerberos windows-authentication iis-8.5 spnego gssapi


    【解决方案1】:

    这完全是关于传输类型的差异。这里有两种不同的传输方式:

    • 任意数据的二进制流
    • HTTP 编码数据的 HTTP 流

    HTTP 请求和响应对于您如何验证请求具有非常具体的语义,即通过Authorization: [scheme] [token] 标头并由响应标头WWW-Authenticate: [Scheme] 发起,其中[scheme] 通常是Negotiate

    二进制流是任意的,并留给实现者做他们想做的任何事情。

    Negotiate 方案是一个 GSS 兼容包,它是一个简单的协议,允许客户端和服务器协商 Kerberos 或 NTLM 等内部身份验证协议。在 Windows 领域,这称为 SSPI 包。

    一个包(GSS 或 SSPI)由一组函数组成,这些函数启动或接受各方之间的握手,然后可能在双方之间加密/解密数据(可选支持)。这些函数生成的消息可以通过任何传输,任何形式的传输都可以调用这些函数。

    WebRequest 的情况下,该类足够智能,可以检测Negotiate 标头并调用Windows SSPI 函数以获取票证,并传递包名称。这主要依靠 Kerberos 来保护票证本身,但它不保护 HTTP 请求中的任何其他内容,因此使用 SSL/TLS。

    NegotiateStream 的情况下,有线格式有些随意,但受Negotiate 握手的限制。客户端将仅通过网络发送协商初始化消息,服务器将响应,如果他们同意,您可以开始相互发送加密消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 2021-02-03
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多