凭据缓存

NTLM KA 连接上的凭据缓存

HTTP 服务器 API 仅在 Keep-Alive (KA) 连接上缓存凭据,以便进行 NTLM 身份验证。 默认情况下,HTTP 服务器 API 会缓存在 KA 连接发送的第一个请求中获取的凭据。 客户端可以在不使用授权标头的情况下在 KA 连接上发送后续请求,并根据以前建立的上下文获取身份验证。 在这种情况下,HTTP 服务器 API 根据缓存的凭据将令牌发送到应用程序。 不会缓存代理发送的请求的凭据。 应用程序通过在调用 HttpSetServerSessionProperty 或 HttpSetUrlGroupProperty 时提供的HTTP_SERVER_AUTHENTICATION_INFO结构中设置 DisableNTLMCredentialCaching 标志来禁用 NTLM 凭据缓存。 禁用凭据缓存时,HTTP 服务器 API 会放弃缓存的凭据,并为每个请求执行身份验证

特定 URL 的 NTLM 凭据缓存

应用程序通过检查HTTP_REQUEST_AUTH_INFO结构的 Flags 参数确定是否缓存 HTTP 服务器 API 返回的请求凭据。 此参数指示从缓存检索返回的 NTLM 令牌时HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED。 凭据缓存是在组中的所有 URL 的 URL 组中指定的。 不支持基于每个 URL 的凭据缓存,但是,应用程序可以通过检查HTTP_REQUEST_AUTH_INFO结构中的HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED标志来确定是按 URL 接受还是拒绝缓存的凭据。 应用程序通过向客户端发送 401 身份验证质询来拒绝缓存的凭据。 然后,客户端使用授权标头重新发送请求,从而使用 HTTP 服务器 API 触发新的身份验证握手。

基本身份验证

当请求中包含基本身份验证标头时,HTTP 服务器 API 会分析标头以获取用户名和密码。 然后,将用户名分析为用户和域部分。 HTTP 服务器 API 根据用户名和域密钥缓存为基本身份验证获取的访问令牌。 收到新请求时,HTTP 服务器 API 会基于用户名和域检索访问令牌。 然后,根据缓存的密码检查请求中的密码。 达到生存时间 (TTL) 限制时,将删除缓存的访问令牌。