据我了解,
- SPN 是 Windows 服务的身份验证工具。
- Kerberos 是一种用户身份验证服务
- SPNEGO-GSSAPI 是能够使用这些服务的第三方 API。
- SSPI :是从 SPNEGO 向 SPN 服务发送请求的中立层。
我完全迷路了吗?
试图弄清楚它是如何工作的,但信息要么太精确,要么不够。
据我了解,
我完全迷路了吗?
试图弄清楚它是如何工作的,但信息要么太精确,要么不够。
好的,更详细的答案:-
SPN - 服务主体名称。它是与 KDC 实现(AD、OpenLDAP 等)中的每个帐户相关联的标识符。基本上,如果您的帐户充当客户端对其进行身份验证的服务,则客户端必须指定要与之通信的“谁”。这个“谁”标识符就是 SPN。这是严格的定义。许多人经常将服务的客户端名称(UPN - 用户主体名称)称为 SPN。当服务本身可以充当客户端(谷歌委托场景)时,就会发生这种情况。这不是严格正确的,但被广泛认为是正确的。
Kerberos 是一种身份验证协议。它是一个框架的名称。它涉及第三方服务器(称为 KDC 或密钥分发中心)并涉及获取票证(身份验证令牌)的一系列步骤。这真的很复杂,所以 http://en.wikipedia.org/wiki/Kerberos_(protocol)
在某种程度上,你做对了。GSSAPI 是一个 API,但 SPNEGO 不是。GSSAPI 在技术上与您使用的身份验证机制无关,但大多数人使用它进行 kerberos 身份验证。SPNEGO 是一种伪机制,从某种意义上说,它声明了一个 RFC,用于在 HTTP 域中进行基于身份验证的通信。严格来说 SPNEGO 是一个规范,但大多数人也将其视为一种实现。例如,Sun 和 IBM JDK 为 SPNEGO 令牌生成提供“机制提供程序”,但 GSSAPI 用于实际调用它。这是在许多项目中完成的(Tomcat 作为服务器是我脑海中浮现的例子,回答这个问题的人之一开发了它)。
SSPI 类似于 Windows 中的 GSSAPI。它是一个不同的 API,最终做的事情与 GSSAPI 非常相似。
不完全的。
SPN仅表示“服务器主体名称”,是您尝试对其进行身份验证的服务的 AD 或 Kerberos 俚语。
Kerberos是一种用户身份验证服务,或多或少是的。它还为网络消息和服务之间的调用提供安全性。
SPNEGO-GSSAPI * 是一种奇怪的野兽。GSSAPI(通用安全服务应用程序接口)是(原则上)不同身份验证服务的 API,它提供所用机制的协商。不过,通常唯一可用的机制是 Kerberos。当您在 Unix 上时,将 3rd 方程序附加到 Kerberos 是常用的 API(在各种 RFC 中定义,例如RFC 2743)
在 windows 平台上SSPI是通用层,因此它与GSSAPI相比。
SPNEGO是一种奇怪的混合体。它是一种在SSPI、 HTTP Auth 或GSSAPI 中使用的机制,它协商另一个身份验证协议(例如 Kerberos 或 NTLM,如果您在 Windows 上),因此它基本上以不同的方式再次执行 GSSAPI 的相同操作。
SPNEGO的典型用途是对 windows 域的 HTTP 身份验证,例如,如果您使用“集成 windows 身份验证”,IIS 就会使用它。当您为 SSPI 选择“协商”选项时,也会使用它。参见例如RFC 4559
你几乎所有的理解都是错误的。
它是这样的: