6

据我了解,

  • SPN 是 Windows 服务的身份验证工具。
  • Kerberos 是一种用户身份验证服务
  • SPNEGO-GSSAPI 是能够使用这些服务的第三方 API。
  • SSPI :是从 SPNEGO 向 SPN 服务发送请求的中立层。

我完全迷路了吗?

试图弄清楚它是如何工作的,但信息要么太精确,要么不够。

4

3 回答 3

15

好的,更详细的答案:-

  1. SPN - 服务主体名称。它是与 KDC 实现(AD、OpenLDAP 等)中的每个帐户相关联的标识符。基本上,如果您的帐户充当客户端对其进行身份验证的服务,则客户端必须指定要与之通信的“谁”。这个“谁”标识符就是 SPN。这是严格的定义。许多人经常将服务的客户端名称(UPN - 用户主体名称)称为 SPN。当服务本身可以充当客户端(谷歌委托场景)时,就会发生这种情况。这不是严格正确的,但被广泛认为是正确的。

  2. Kerberos 是一种身份验证协议。它是一个框架的名称。它涉及第三方服务器(称为 KDC 或密钥分发中心)并涉及获取票证(身份验证令牌)的一系列步骤。这真的很复杂,所以 http://en.wikipedia.org/wiki/Kerberos_(protocol)

  3. 在某种程度上,你做对了。GSSAPI 是一个 API,但 SPNEGO 不是。GSSAPI 在技术上与您使用的身份验证机制无关,但大多数人使用它进行 kerberos 身份验证。SPNEGO 是一种伪机制,从某种意义上说,它声明了一个 RFC,用于在 HTTP 域中进行基于身份验证的通信。严格来说 SPNEGO 是一个规范,但大多数人也将其视为一种实现。例如,Sun 和 IBM JDK 为 SPNEGO 令牌生成提供“机制提供程序”,但 GSSAPI 用于实际调用它。这是在许多项目中完成的(Tomcat 作为服务器是我脑海中浮现的例子,回答这个问题的人之一开发了它)。

  4. SSPI 类似于 Windows 中的 GSSAPI。它是一个不同的 API,最终做的事情与 GSSAPI 非常相似。

于 2013-12-06T12:28:08.207 回答
4

不完全的。

SPN仅表示“服务器主体名称”,是您尝试对其进行身份验证的服务的 AD 或 Kerberos 俚语。

Kerberos是一种用户身份验证服务,或多或少是的。它还为网络消息和服务之间的调用提供安全性。

SPNEGO-GSSAPI * 是一种奇怪的野兽。GSSAPI(通用安全服务应用程序接口)是(原则上)不同身份验证服务的 API,它提供所用机制的协商。不过,通常唯一可用的机制是 Kerberos。当您在 Unix 上时,将 3rd 方程序附加到 Kerberos 是常用的 API(在各种 RFC 中定义,例如RFC 2743

在 windows 平台上SSPI是通用层,因此它与GSSAPI相比。

SPNEGO是一种奇怪的混合体。它是一种在SSPI、 HTTP Auth 或GS​​SAPI 中使用的机制,它协商另一个身份验证协议(例如 Kerberos 或 NTLM,如果您在 Windows 上),因此它基本上以不同的方式再次执行 GSSAPI 的相同操作

SPNEGO的典型用途是对 windows 域的 HTTP 身份验证,例如,如果您使用“集成 windows 身份验证”,IIS 就会使用它。当您为 SSPI 选择“协商”选项时,也会使用它。参见例如RFC 4559

于 2013-12-05T20:07:38.310 回答
1

你几乎所有的理解都是错误的。

它是这样的:

  1. SPN:特定服务类绑定到特定帐户,例如 HTTP 到 www.stackoverflow.com => HTTP/www.stackoverflow.com@STACKOVERFLOW.COM
  2. 是的 3./4。GSS-API (Unix)/SSPI (Windows):与之交互的机制中立 API。例如,Kerberos 5、NTLM、SPNEGO 等。
  3. SPNEGO:它是 GSS-API/SSPI 支持的众多机制之一。它实际上是一个伪机械。
于 2013-12-05T20:00:58.990 回答