SSPI

安全支持提供者接口（，缩写SSPI）是Microsoft Windows操作系统中用于执行各种安全相关操作（如身份验证）的一个Win32 API。

SSPI的功能是作为众多安全支持提供程序（SSP）的通用接口：安全支持提供者（Security Support Provider）是可以为应用程序提供一种或多种安全功能包的动态链接库（dynamic-link library）。

Windows SSP 
下列SSP已经在Windows中预装：
 （Windows NT 3.51中引入）(msv1_0.dll) - 为Windows 2000之前的客户端-服务器域和非域身份验证（SMB/CIFS）提供质询/响应身份验证。
 Kerberos（Windows 2000中引入，Windows Vista中更新为支持AES） (kerberos.dll) - Windows 2000及更高版本中首选的客户端-服务器域相互身份验证。 
 （Windows 2000中引入）(secur32.dll) - 选择Kerberos，如果不可用则选择NTLM协议。协商SSP提供單一登入能力，有时称为（尤其是用于IIS时）。在Windows 7及更高版本中，NEGOExts引入了协商使用客户端和服务器上支持的已安装定制SSP进行身份验证。
 安全通道（也称SChannel） - Windows 2000中引入，Windows Vista中更新为支持更强的AES加密和ECC该提供者使用SSL/TLS记录来加密数据有效载荷。(Schannel.dll)
 （过时）和微软的TLS/SSL - 公开密钥加密 SSP为通过互联网的客户端和服务器进行身份验证，提供加密和安全通信。Windows 7中更新为支持TLS 1.2。
 摘要SSP（Windows XP中引入）(wdigest.dll) - 在Windows与Kerberos不可用的非Windows系统间提供基于HTTP和SASL身份验证的质询/响应。
 凭据 (CredSSP)（Windows Vista中引入，Windows XP SP3上也可用）(credssp.dll) - 为远程桌面连接提供单点登录（SSO）和网络级身份验证。
 分布式密码验证（DPA） - （Windows 2000中引入）(msapsspc.dll) - 提供使用数字证书完成的互联网身份验证。
 用户对用户的公开密钥加密技术（Public Key Cryptography User-to-User，PKU2U）（Windows 7中引入）(pku2u.dll) - 在不隶属域的系统之间提供使用数字证书的对等身份验证。

比较 
SSPI是的一个专有变体，进行了扩展并具有许多特定于Windows的数据类型。最早随Windows NT 3.51和Windows 95中的的（NTLMSSP）出现。在Windows 2000中，增加了一个Kerberos 5的实现，使用符合官方协议标准RFC 1964 （Kerberos 5 GSSAPI机制）的令牌格式并提供提供与其他供应商的Kerberos 5实现的线级互操作性。

SSPI生成和接受的令牌大多与GSS-API兼容，因此Windows上的SSPI客户端可能能够根据具体情况与Unix上的GSS-API服务器进行身份验证。SSPI的一个重要缺点是缺乏，这使得不可能做到一些GSSAPI的互操作性。

互联网工程任务组（IETF）定义的GSSAPI与微软SSPI的另一个根本区别是“”概念。在这种模式下，一个服务器可以切换成经过身份验证客户端的“完整”特权并进行操作，以便操作系统执行完整的存取控制检查。所持权限高于或低于原始权限全取决于哪个客户端在连接/验证。在传统（GSSAPI）模型中，当服务器运行在服务帐户下时，其不能提升自己的特权，并必须以特定客户端或应用程序的方式执行访问控制。而在Windows Vista中通过将扮演限制在选定的服务帐户，限制了“扮演”概念带来的显著安全隐患。

参考资料

外部链接 
 SSPI Reference on MSDN
 SSPI Information and Win32 samples
 Example of use of SSPI for HTTP authentification

Microsoft Windows安全技术
微軟API