据我了解,
- SPN 是 Windows 服务的身份验证工具。
- Kerberos 是一个 用户认证服务
- SPNEGO-GSSAPI 是第三方 API 能够使用这些服务。
- SSPI:是发送的中立层 从 SPNEGO 到 SPN 服务的请求。
我完全迷失了吗?
试图弄清楚它是如何工作的,但信息要么太精确,要么不够。
最佳答案
好的,更详细的答案:-
SPN - 服务主体名称。它是与 KDC 实现(AD、OpenLDAP 等)中的每个帐户关联的标识符。基本上,如果您的帐户充当客户端进行身份验证的服务,则客户端必须指定它想要与“谁”通信。这个“谁”标识符就是 SPN。这是严格的定义。许多人经常将服务的客户端名称(UPN - 用户主体名称)称为 SPN。当服务本身可以充当客户端时会发生这种情况(谷歌委托(delegate)场景)。这并不严格正确,但被广泛认为是正确的。
Kerberos 是一种身份验证协议(protocol)。它是一个框架的名称。它涉及第三方服务器(称为KDC或 key 分发中心)并涉及一系列获取票据(身份验证 token )的步骤。真的很复杂,所以http://en.wikipedia.org/wiki/Kerberos_(protocol)
在某种程度上你是对的。 GSSAPI 是一个 API,但 SPNEGO 不是。 GSSAPI 在技术上与您使用的身份验证机制无关,但大多数人使用它进行 kerberos 身份验证。 SPNEGO 是一种伪机制,从某种意义上说,它声明了一个用于 HTTP 域中基于身份验证的通信的 RFC。严格来说,SPNEGO 是一个规范,但大多数人也将其视为一种实现。例如,Sun 和 IBM JDK 为 SPNEGO token 生成提供了“机制提供者”,但实际上使用 GSSAPI 来调用它。许多项目都这样做了(Tomcat 作为服务器是一个例子,它出现在我的脑海中,回答这个问题的人之一开发了它)。
SSPI 类似于 Windows 中的 GSSAPI。它是一个不同的 API,最终执行的操作与 GSSAPI 非常相似。
关于kerberos - SPN 与 Kerberos 的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409018/