什么是SASL / GSSAPI?

无数次我遇到了SASL / GSSAPIexpression式。 我已经search了很多次,但我不明白它是什么以及它如何与Kerberos相关。

任何人对此有一个简单的解释?

SASL和GSSAPI是可以插入各种身份validation提供程序的框架。 希望在支持SASL或GSSAPI的应用程序中使用Kerberos身份validation的用户只需提供适当的Kerberos插件,而不是使用特定于Kerberos的代码重写应用程序。

SASL代表简单authentication和安全层; 它是一个允许开发人员实现不同身份validation机制的框架,并允许客户端和服务器为每个连接协商一个双方都可以接受的机制(而不是硬编码或预先configuration它们)。

GSSAPI代表通用安全服务应用程序接口; 它通常作为SASL可以使用的机制之一提供。 这本身就是开发和实现各种authentication机制的另一个框架。 这些机制包括Kerberos,NTLM和SPNEGO (简单和受保护的GSSAPI协商机制):GSSAPI伪机制,允许GSSAPI兼容的客户端协商他们想要使用的GSSAPI机制。

这里有一个例子可以帮助我们更清楚一点(为了清楚起见,我们粗暴地简化了一下):

  1. 客户端连接到服务器,并说:“我支持SASL!我应该如何validation自己?”
  2. 服务器接收连接并响应,“我也支持SASL,并且可以使用这些机制,按照优先级的降序排列:GSSAPI,CRAM-MD5,PLAIN。
  3. 客户回应:“在select中,我想使用GSSAPI。”
  4. 服务器响应“GSSAPI?Capital。我支持Kerberos和NTLM”。
  5. 客户端响应“让我们使用Kerberos,这是我的encryption票等等”