kerberos - SPN 与 Kerberos 的工作原理

标签 kerberos windows-authentication spnego gssapi sspi

据我了解,

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

我完全迷失了吗?

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

最佳答案

好的,更详细的答案:-

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

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

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

  4. SSPI 类似于 Windows 中的 GSSAPI。它是一个不同的 API,最终执行的操作与 GSSAPI 非常相似。

关于kerberos - SPN 与 Kerberos 的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409018/

相关文章:

java - 了解和探索 JAAS-GSSAPI-JNDI 如何在后台协同工作

Alfresco Share - Kerberos SSO 问题

security - Windows8上的Kerberos

iis - 使用 ARR 和 URL 重写从 IIS 转发 NTLM 凭据

asp.net-mvc - ASP.NET MVC 4 中 Windows 身份验证和表单例份验证的混合

c# - 从 C# 访问经过 SPNEGO 身份验证的 Web 服务

c - gssapi 错误 - 在 Kerberos 数据库中找不到服务器

asp.net - 使 Windows 身份验证和 WKHTMLToPDF 发挥良好的作用

java - 使用 SPNEGO Web SSO 自动登录

http - curl 停止协商 SPNEGO - mech unknown 的 unknown mech-code 0