HttpWebRequest.UnsafeAuthenticatedConnectionSharing 属性

定义

获取或设置一个值,该值指示是否允许高速 NTLM 身份验证的连接共享。

public:
 property bool UnsafeAuthenticatedConnectionSharing { bool get(); void set(bool value); };
public bool UnsafeAuthenticatedConnectionSharing { get; set; }
member this.UnsafeAuthenticatedConnectionSharing : bool with get, set
Public Property UnsafeAuthenticatedConnectionSharing As Boolean

属性值

true 使经过身份验证的连接保持打开状态;否则,false

注解

谨慎

WebRequestHttpWebRequestServicePointWebClient 已过时,不应将其用于新开发。 请改用 HttpClient

此属性的默认值为 false,这会导致在请求完成后关闭当前连接。 应用程序每次发出新请求时都必须通过身份验证序列。

如果此属性设置为 true,则用于检索响应的连接在执行身份验证后保持打开状态。 在这种情况下,将此属性设置为 true 的其他请求可能会使用连接而不重新进行身份验证。 换句话说,如果某个连接已经过用户 A 身份验证,则用户 B 可以重复使用 A 的连接;用户 B 的请求是根据用户 A 的凭据完成的。

谨慎

由于应用程序可以在未经身份验证的情况下使用连接,因此需要在将此属性设置为 true时确保系统中没有管理漏洞。 如果应用程序发送对多个用户的请求(模拟多个用户帐户),并依赖于身份验证来保护资源,请不要将此属性设置为 true,除非使用连接组,如下所示。

如果遇到性能问题,并且应用程序在具有集成 Windows 身份验证的 Web 服务器上运行,则可能需要考虑启用此机制。

启用此设置会打开系统,使其面临安全风险。 如果将 UnsafeAuthenticatedConnectionSharing 属性设置为 true 请务必采取以下预防措施:

  • 使用 ConnectionGroupName 属性管理不同用户的连接。 这样就避免了未经身份验证的应用程序可能使用该连接。 例如,用户 A 应具有不同于用户 B 的唯一连接组名称。这为每个用户帐户提供隔离层。

  • 在受保护的环境中运行应用程序,以帮助避免可能的连接攻击。

如果控制后端服务器,作为替代方法,可以考虑关闭身份验证持久性。 这提高了性能,但性能越低,但更安全。 有关详细信息,请参阅 AuthPersistence

注意

如果 PreAuthenticateUnsafeAuthenticatedConnectionSharing 都设置为 true,则会使用来自不安全池的连接发送每个请求,但具有授权标头。

适用于