@@ -90,6 +90,7 @@ private static readonly Dictionary<string, SqlColumnEncryptionKeyStoreProvider>
9090        private  IReadOnlyDictionary < string ,  SqlColumnEncryptionKeyStoreProvider >  _customColumnEncryptionKeyStoreProviders ; 
9191
9292        private  Func < SqlAuthenticationParameters ,  CancellationToken ,  Task < SqlAuthenticationToken > >  _accessTokenCallback ; 
93+         private  SspiContextProvider  _sspiContextProvider ; 
9394
9495        internal  bool  HasColumnEncryptionKeyStoreProvidersRegistered  => 
9596            _customColumnEncryptionKeyStoreProviders  is  not null  &&  _customColumnEncryptionKeyStoreProviders . Count  >  0 ; 
@@ -647,7 +648,7 @@ public override string ConnectionString
647648                        CheckAndThrowOnInvalidCombinationOfConnectionOptionAndAccessTokenCallback ( connectionOptions ) ; 
648649                    } 
649650                } 
650-                 ConnectionString_Set ( new  SqlConnectionPoolKey ( value ,  _credential ,  _accessToken ,  _accessTokenCallback ) ) ; 
651+                 ConnectionString_Set ( new  SqlConnectionPoolKey ( value ,  _credential ,  _accessToken ,  _accessTokenCallback ,   _sspiContextProvider ) ) ; 
651652                _connectionString  =  value ;   // Change _connectionString value only after value is validated 
652653                CacheConnectionStringProperties ( ) ; 
653654            } 
@@ -707,7 +708,7 @@ public string AccessToken
707708                } 
708709
709710                // Need to call ConnectionString_Set to do proper pool group check 
710-                 ConnectionString_Set ( new  SqlConnectionPoolKey ( _connectionString ,  credential :  _credential ,  accessToken :  value ,  accessTokenCallback :  null ) ) ; 
711+                 ConnectionString_Set ( new  SqlConnectionPoolKey ( _connectionString ,  credential :  _credential ,  accessToken :  value ,  accessTokenCallback :  null ,   sspiContextProvider :   _sspiContextProvider ) ) ; 
711712                _accessToken  =  value ; 
712713            } 
713714        } 
@@ -730,11 +731,22 @@ public Func<SqlAuthenticationParameters, CancellationToken, Task<SqlAuthenticati
730731                    CheckAndThrowOnInvalidCombinationOfConnectionOptionAndAccessTokenCallback ( ( SqlConnectionString ) ConnectionOptions ) ; 
731732                } 
732733
733-                 ConnectionString_Set ( new  SqlConnectionPoolKey ( _connectionString ,  credential :  _credential ,  accessToken :  null ,  accessTokenCallback :  value ) ) ; 
734+                 ConnectionString_Set ( new  SqlConnectionPoolKey ( _connectionString ,  credential :  _credential ,  accessToken :  null ,  accessTokenCallback :  value ,   sspiContextProvider :   _sspiContextProvider ) ) ; 
734735                _accessTokenCallback  =  value ; 
735736            } 
736737        } 
737738
739+         /// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlConnection.xml' path='docs/members[@name="SqlConnection"]/SspiContextProvider/*' /> 
740+         public  SspiContextProvider  SspiContextProvider 
741+         { 
742+             get  {  return  _sspiContextProvider ;  } 
743+             set 
744+             { 
745+                 ConnectionString_Set ( new  SqlConnectionPoolKey ( _connectionString ,  credential :  _credential ,  accessToken :  null ,  accessTokenCallback :  _accessTokenCallback ,  sspiContextProvider :  value ) ) ; 
746+                 _sspiContextProvider  =  value ; 
747+             } 
748+         } 
749+ 
738750        /// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlConnection.xml' path='docs/members[@name="SqlConnection"]/Database/*' /> 
739751        [ ResDescription ( StringsHelper . ResourceNames . SqlConnection_Database ) ] 
740752        [ ResCategory ( StringsHelper . ResourceNames . SqlConnection_DataSource ) ] 
@@ -1032,7 +1044,7 @@ public SqlCredential Credential
10321044                _credential  =  value ; 
10331045
10341046                // Need to call ConnectionString_Set to do proper pool group check 
1035-                 ConnectionString_Set ( new  SqlConnectionPoolKey ( _connectionString ,  _credential ,  accessToken :  _accessToken ,  accessTokenCallback :  _accessTokenCallback ) ) ; 
1047+                 ConnectionString_Set ( new  SqlConnectionPoolKey ( _connectionString ,  _credential ,  accessToken :  _accessToken ,  accessTokenCallback :  _accessTokenCallback ,   _sspiContextProvider ) ) ; 
10361048            } 
10371049        } 
10381050
@@ -2262,7 +2274,7 @@ public static void ChangePassword(string connectionString, string newPassword)
22622274                    throw  ADP . InvalidArgumentLength ( nameof ( newPassword ) ,  TdsEnums . MAXLEN_NEWPASSWORD ) ; 
22632275                } 
22642276
2265-                 SqlConnectionPoolKey  key  =  new  SqlConnectionPoolKey ( connectionString ,  credential :  null ,  accessToken :  null ,  accessTokenCallback :  null ) ; 
2277+                 SqlConnectionPoolKey  key  =  new  SqlConnectionPoolKey ( connectionString ,  credential :  null ,  accessToken :  null ,  accessTokenCallback :  null ,   sspiContextProvider :   null ) ; 
22662278
22672279                SqlConnectionString  connectionOptions  =  SqlConnectionFactory . FindSqlConnectionOptions ( key ) ; 
22682280                if  ( connectionOptions . IntegratedSecurity ) 
@@ -2311,7 +2323,7 @@ public static void ChangePassword(string connectionString, SqlCredential credent
23112323                    throw  ADP . InvalidArgumentLength ( nameof ( newSecurePassword ) ,  TdsEnums . MAXLEN_NEWPASSWORD ) ; 
23122324                } 
23132325
2314-                 SqlConnectionPoolKey  key  =  new  SqlConnectionPoolKey ( connectionString ,  credential ,  accessToken :  null ,  accessTokenCallback :  null ) ; 
2326+                 SqlConnectionPoolKey  key  =  new  SqlConnectionPoolKey ( connectionString ,  credential ,  accessToken :  null ,  accessTokenCallback :  null ,   sspiContextProvider :   null ) ; 
23152327
23162328                SqlConnectionString  connectionOptions  =  SqlConnectionFactory . FindSqlConnectionOptions ( key ) ; 
23172329
@@ -2349,7 +2361,7 @@ private static void ChangePassword(string connectionString, SqlConnectionString
23492361            { 
23502362                con ? . Dispose ( ) ; 
23512363            } 
2352-             SqlConnectionPoolKey  key  =  new  SqlConnectionPoolKey ( connectionString ,  credential ,  accessToken :  null ,  accessTokenCallback :  null ) ; 
2364+             SqlConnectionPoolKey  key  =  new  SqlConnectionPoolKey ( connectionString ,  credential ,  accessToken :  null ,  accessTokenCallback :  null ,   sspiContextProvider :   null ) ; 
23532365
23542366            SqlConnectionFactory . SingletonInstance . ClearPool ( key ) ; 
23552367        } 
0 commit comments