SPN和Kerberos是如何工作的



据我所知,

  • SPN是windows服务的身份验证工具
  • Kerberos是用户身份验证服务
  • SPNEGO-GSAPI是第三方API能够使用这些服务
  • SSPI:是要发送的中性层从SPNEGO到SPN服务的请求

我完全迷路了吗?

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

好的,一个更详细的答案:-

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

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

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

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

不完全是。

SPN的意思只是"服务器主体名称",是AD或Kerberos俚语,用于尝试进行身份验证的服务。

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

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

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

SPNEGO是一种奇怪的混合体。它是SSPI、HTTP Auth或GSSAPI

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

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

它来了:

  1. SPN:特定的服务类绑定到特定的帐户,例如HTTP到www.stackeoverlow.com=>HTTP/www.stackoverflow.com@STACKOVERFLOW.COM
  2. 是3./4.GSS-API(Unix)/SPI(Windows):与机制无关的API交互。例如,Kerberos 5、NTLM、SPNEGO等
  3. SPNEGO:它是GSS-API/SPI支持的众多机制之一。它实际上是一个伪机械

最新更新