使用安全包
安全支持提供程序接口 (SSPI) 可与以下安全包一起使用:
Kerberos 和 NTLM 协议作为Secur32.dll安全支持提供程序的安全包实现, (SSP) 随操作系统一起提供。 默认情况下,系统启动时, 本地安全机构 (LSA) 在计算机上加载对 Kerberos 和 NTLM 身份验证的支持。 在 Windows Server 或 Windows 域中,任一包都可用于对网络登录和客户端/服务器连接进行身份验证。 使用哪一个取决于连接另一端的计算机的功能。 如果可用,则始终首选 Kerberos 协议。
为交互式用户建立安全上下文后,用户的安全上下文中运行的进程可以加载 Kerberos 或 NTLM 包的另一个实例,以支持消息的交换、签名、验证、加密和解密。 但是,除了 LSA 之外,任何其他进程都不允许访问凭据缓存中的 会话密钥 或票证。
系统服务和传输级应用程序通过 SSPI 访问 SSP,SSPI 提供用于枚举系统上可用的安全包、选择包以及使用该包获取经过身份验证的连接的功能。
SSPI 中的方法是开发人员无需了解特定 安全协议的详细信息即可使用的泛型例程。 例如,对客户端/服务器连接进行身份验证时:
- 连接客户端上的应用程序使用 SSPI 函数 InitializeSecurityContext (General) 将凭据发送到服务器。
- 连接服务器端的应用程序使用 SSPI 函数 AcceptSecurityContext (General) 进行响应。
- 对连接进行身份验证后,服务器上的 LSA 使用来自客户端的信息来生成 访问令牌。
- 然后,服务器可以调用 SSPI 函数 ImpersonateSecurityContext ,将访问令牌附加到服务的模拟线程。
Kerberos 安全包
Kerberos 安全包 基于 Kerberos 身份验证协议。
如果使用 Kerberos 协议对客户端/服务器连接进行身份验证, 则 InitializeSecurityContext (Kerberos) 将生成 GSSAPI 消息,其中包含来自客户端的KRB_AP_REQ消息。 AcceptSecurityContext (Kerberos) 然后生成 GSSAPI 消息,其中包含来自服务器的KRB_AP_REP消息。
有关在实现 Kerberos 协议时在后台执行的步骤的背景信息,请参阅 Microsoft Kerberos。
所有分布式服务都使用 SSPI 访问 Kerberos 协议。 Kerberos 协议用于身份验证的方式的部分列表包括:
- 打印后台处理程序服务
- CIFS/SMB 远程文件访问
- 对 Active Directory 的 LDAP 查询
- 分布式文件系统管理和引用
- IPsec 主机到主机安全机构身份验证
- 针对网络服务质量的预留请求
- Internet Information Services 的 Intranet 身份验证
- 使用经过身份验证的 RPC 进行远程服务器或工作站管理
- 域用户和计算机的证书服务证书请求
NTLM 安全包
NTLM 安全包基于 NTLM 身份验证协议。