SPN如何与Kerberos一起工作

时间:2013-12-05 19:38:23

标签: kerberos spnego sspi gssapi windows-integrated-auth

据我所知,

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

我完全迷失了吗?

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

由于

3 个答案:

答案 0 :(得分:11)

好的答案更详细: -

  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非常相似的事情。

答案 1 :(得分:2)

不完全。

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

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

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

在Windows平台上 SSPI 是通用图层,因此与 GSSAPI 进行比较。

SPNEGO 是一种奇怪的混合体。这是一种在 SSPI ,HTTP Auth或 GSSAPI 中使用的机制,它协商另一个auth协议(例如,如果你在Windows上,则为Kerberos或NTLM),所以它基本上是GSSAPI以不同的方式再次做同样的事情。

SPNEGO 的典型用法是对Windows域进行HTTP身份验证,例如,如果您使用“集成Windows身份验证”,则IIS会使用它。当您为SSPI选择“协商”选项时,也会使用它。请参阅示例RFC 4559

答案 2 :(得分: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支持的众多机制之一。它实际上是一个伪机制。