Skip to content

Commit 189a86a

Browse files
committed
remove factory
1 parent 2039bd9 commit 189a86a

File tree

9 files changed

+50
-42
lines changed

9 files changed

+50
-42
lines changed

doc/snippets/Microsoft.Data.SqlClient/SqlConnection.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2086,11 +2086,11 @@ The following sample tries to open a connection to an invalid database to simula
20862086
Returns 0 if the connection is inactive on the client side.
20872087
</remarks>
20882088
</ServerProcessId>
2089-
<SspiContextProviderFactory>
2089+
<SspiContextProvider>
20902090
<summary>
2091-
Gets or sets the factory used to create an <see cref="SspiContextProvider"/> instance for customizing the SSPI context. If not set, the default for the platform will be used.
2091+
Gets or sets the <see cref="SspiContextProvider"/> instance for customizing the SSPI context. If not set, the default for the platform will be used.
20922092
</summary>
2093-
</SspiContextProviderFactory>
2093+
</SspiContextProvider>
20942094
<State>
20952095
<summary>
20962096
Indicates the state of the <see cref="T:Microsoft.Data.SqlClient.SqlConnection" /> during the most recent network operation performed on the connection.

doc/snippets/Microsoft.Data.SqlClient/SspiContextProvider.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
<SspiContextProvider>
55
<summary>Provides the ability to customize SSPI context generation.</summary>
66
</SspiContextProvider>
7+
<ctor>
8+
<summary>Creates an instance of the SSPIContextProvider.</summary>
9+
</ctor>
710
<GenerateSspiClientContext>
811
<summary>Generates an SSPI outgoing blob given the incoming blob.</summary>
912
<param name="incomingBlob">Incoming blob</param>

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +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 Func<SspiContextProvider> _sspiContextProviderFactory;
93+
private SspiContextProvider _sspiContextProvider;
9494

9595
internal bool HasColumnEncryptionKeyStoreProvidersRegistered =>
9696
_customColumnEncryptionKeyStoreProviders is not null && _customColumnEncryptionKeyStoreProviders.Count > 0;
@@ -648,7 +648,7 @@ public override string ConnectionString
648648
CheckAndThrowOnInvalidCombinationOfConnectionOptionAndAccessTokenCallback(connectionOptions);
649649
}
650650
}
651-
ConnectionString_Set(new SqlConnectionPoolKey(value, _credential, _accessToken, _accessTokenCallback, _sspiContextProviderFactory));
651+
ConnectionString_Set(new SqlConnectionPoolKey(value, _credential, _accessToken, _accessTokenCallback, _sspiContextProvider));
652652
_connectionString = value; // Change _connectionString value only after value is validated
653653
CacheConnectionStringProperties();
654654
}
@@ -708,7 +708,7 @@ public string AccessToken
708708
}
709709

710710
// Need to call ConnectionString_Set to do proper pool group check
711-
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, credential: _credential, accessToken: value, accessTokenCallback: null, sspiContextProviderFactory: _sspiContextProviderFactory));
711+
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, credential: _credential, accessToken: value, accessTokenCallback: null, sspiContextProvider: _sspiContextProvider));
712712
_accessToken = value;
713713
}
714714
}
@@ -731,19 +731,19 @@ public Func<SqlAuthenticationParameters, CancellationToken, Task<SqlAuthenticati
731731
CheckAndThrowOnInvalidCombinationOfConnectionOptionAndAccessTokenCallback((SqlConnectionString)ConnectionOptions);
732732
}
733733

734-
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, credential: _credential, accessToken: null, accessTokenCallback: value, sspiContextProviderFactory: _sspiContextProviderFactory));
734+
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, credential: _credential, accessToken: null, accessTokenCallback: value, sspiContextProvider: _sspiContextProvider));
735735
_accessTokenCallback = value;
736736
}
737737
}
738738

739-
/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlConnection.xml' path='docs/members[@name="SqlConnection"]/SspiContextProviderFactory/*' />
740-
public Func<SspiContextProvider> SspiContextProviderFactory
739+
/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlConnection.xml' path='docs/members[@name="SqlConnection"]/SspiContextProvider/*' />
740+
public SspiContextProvider SspiContextProvider
741741
{
742-
get { return _sspiContextProviderFactory; }
742+
get { return _sspiContextProvider; }
743743
set
744744
{
745-
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, credential: _credential, accessToken: null, accessTokenCallback: _accessTokenCallback, sspiContextProviderFactory: value));
746-
_sspiContextProviderFactory = value;
745+
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, credential: _credential, accessToken: null, accessTokenCallback: _accessTokenCallback, sspiContextProvider: value));
746+
_sspiContextProvider = value;
747747
}
748748
}
749749

@@ -1044,7 +1044,7 @@ public SqlCredential Credential
10441044
_credential = value;
10451045

10461046
// Need to call ConnectionString_Set to do proper pool group check
1047-
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, accessToken: _accessToken, accessTokenCallback: _accessTokenCallback, _sspiContextProviderFactory));
1047+
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, accessToken: _accessToken, accessTokenCallback: _accessTokenCallback, _sspiContextProvider));
10481048
}
10491049
}
10501050

@@ -2274,7 +2274,7 @@ public static void ChangePassword(string connectionString, string newPassword)
22742274
throw ADP.InvalidArgumentLength(nameof(newPassword), TdsEnums.MAXLEN_NEWPASSWORD);
22752275
}
22762276

2277-
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential: null, accessToken: null, accessTokenCallback: null, sspiContextProviderFactory: null);
2277+
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential: null, accessToken: null, accessTokenCallback: null, sspiContextProvider: null);
22782278

22792279
SqlConnectionString connectionOptions = SqlConnectionFactory.FindSqlConnectionOptions(key);
22802280
if (connectionOptions.IntegratedSecurity)
@@ -2323,7 +2323,7 @@ public static void ChangePassword(string connectionString, SqlCredential credent
23232323
throw ADP.InvalidArgumentLength(nameof(newSecurePassword), TdsEnums.MAXLEN_NEWPASSWORD);
23242324
}
23252325

2326-
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential, accessToken: null, accessTokenCallback: null, sspiContextProviderFactory: null);
2326+
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential, accessToken: null, accessTokenCallback: null, sspiContextProvider: null);
23272327

23282328
SqlConnectionString connectionOptions = SqlConnectionFactory.FindSqlConnectionOptions(key);
23292329

@@ -2361,7 +2361,7 @@ private static void ChangePassword(string connectionString, SqlConnectionString
23612361
{
23622362
con?.Dispose();
23632363
}
2364-
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential, accessToken: null, accessTokenCallback: null, sspiContextProviderFactory: null);
2364+
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential, accessToken: null, accessTokenCallback: null, sspiContextProvider: null);
23652365

23662366
SqlConnectionFactory.SingletonInstance.ClearPool(key);
23672367
}

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnectionFactory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ override protected DbConnectionInternal CreateConnection(DbConnectionOptions opt
9696
// This first connection is established to SqlExpress to get the instance name
9797
// of the UserInstance.
9898
SqlConnectionString sseopt = new SqlConnectionString(opt, opt.DataSource, userInstance: true, setEnlistValue: false);
99-
sseConnection = new SqlInternalConnectionTds(identity, sseopt, key.Credential, null, "", null, false, applyTransientFaultHandling: applyTransientFaultHandling, sspiContextProviderFactory: key.SspiContextProviderFactory);
99+
sseConnection = new SqlInternalConnectionTds(identity, sseopt, key.Credential, null, "", null, false, applyTransientFaultHandling: applyTransientFaultHandling, sspiContextProvider: key.SspiContextProvider);
100100
// NOTE: Retrieve <UserInstanceName> here. This user instance name will be used below to connect to the Sql Express User Instance.
101101
instanceName = sseConnection.InstanceName;
102102

@@ -136,7 +136,7 @@ override protected DbConnectionInternal CreateConnection(DbConnectionOptions opt
136136
opt = new SqlConnectionString(opt, instanceName, userInstance: false, setEnlistValue: null);
137137
poolGroupProviderInfo = null; // null so we do not pass to constructor below...
138138
}
139-
return new SqlInternalConnectionTds(identity, opt, key.Credential, poolGroupProviderInfo, "", null, redirectedUserInstance, userOpt, recoverySessionData, applyTransientFaultHandling: applyTransientFaultHandling, key.AccessToken, pool, key.AccessTokenCallback, key.SspiContextProviderFactory);
139+
return new SqlInternalConnectionTds(identity, opt, key.Credential, poolGroupProviderInfo, "", null, redirectedUserInstance, userOpt, recoverySessionData, applyTransientFaultHandling: applyTransientFaultHandling, key.AccessToken, pool, key.AccessTokenCallback, key.SspiContextProvider);
140140
}
141141

142142
protected override DbConnectionOptions CreateConnectionOptions(string connectionString, DbConnectionOptions previous)

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ internal sealed class SqlInternalConnectionTds : SqlInternalConnection, IDisposa
136136
SqlFedAuthToken _fedAuthToken = null;
137137
internal byte[] _accessTokenInBytes;
138138
internal readonly Func<SqlAuthenticationParameters, CancellationToken, Task<SqlAuthenticationToken>> _accessTokenCallback;
139-
internal readonly Func<SspiContextProvider> _sspiContextProviderFactory;
139+
internal readonly SspiContextProvider _sspiContextProvider;
140140

141141
private readonly ActiveDirectoryAuthenticationTimeoutRetryHelper _activeDirectoryAuthTimeoutRetryHelper;
142142

@@ -456,7 +456,7 @@ internal SqlInternalConnectionTds(
456456
string accessToken = null,
457457
DbConnectionPool pool = null,
458458
Func<SqlAuthenticationParameters, CancellationToken, Task<SqlAuthenticationToken>> accessTokenCallback = null,
459-
Func<SspiContextProvider> sspiContextProviderFactory = null) : base(connectionOptions)
459+
SspiContextProvider sspiContextProvider = null) : base(connectionOptions)
460460

461461
{
462462
#if DEBUG
@@ -490,7 +490,7 @@ internal SqlInternalConnectionTds(
490490
}
491491

492492
_accessTokenCallback = accessTokenCallback;
493-
_sspiContextProviderFactory = sspiContextProviderFactory;
493+
_sspiContextProvider = sspiContextProvider;
494494

495495
_activeDirectoryAuthTimeoutRetryHelper = new ActiveDirectoryAuthenticationTimeoutRetryHelper();
496496

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ internal void Connect(ServerInfo serverInfo,
413413
// AD Integrated behaves like Windows integrated when connecting to a non-fedAuth server
414414
if (integratedSecurity || authType == SqlAuthenticationMethod.ActiveDirectoryIntegrated)
415415
{
416-
_authenticationProvider = Connection._sspiContextProviderFactory?.Invoke() ?? _physicalStateObj.CreateSspiContextProvider();
416+
_authenticationProvider = Connection._sspiContextProvider ?? _physicalStateObj.CreateSspiContextProvider();
417417
SqlClientEventSource.Log.TryTraceEvent("TdsParser.Connect | SEC | SSPI or Active Directory Authentication Library loaded for SQL Server based integrated authentication");
418418
}
419419

src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private static readonly Dictionary<string, SqlColumnEncryptionKeyStoreProvider>
8888

8989
private Func<SqlAuthenticationParameters, CancellationToken, Task<SqlAuthenticationToken>> _accessTokenCallback;
9090

91-
private Func<SspiContextProvider> _sspiContextProviderFactory;
91+
private SspiContextProvider _sspiContextProvider;
9292

9393
internal bool HasColumnEncryptionKeyStoreProvidersRegistered =>
9494
_customColumnEncryptionKeyStoreProviders is not null && _customColumnEncryptionKeyStoreProviders.Count > 0;
@@ -605,14 +605,14 @@ internal int ConnectRetryInterval
605605
get => ((SqlConnectionString)ConnectionOptions).ConnectRetryInterval;
606606
}
607607

608-
/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlConnection.xml' path='docs/members[@name="SqlConnection"]/SspiContextProviderFactory/*' />
609-
public Func<SspiContextProvider> SspiContextProviderFactory
608+
/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlConnection.xml' path='docs/members[@name="SqlConnection"]/SspiContextProvider/*' />
609+
public SspiContextProvider SspiContextProvider
610610
{
611-
get { return _sspiContextProviderFactory; }
611+
get { return _sspiContextProvider; }
612612
set
613613
{
614614
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, null, _accessTokenCallback, value));
615-
_sspiContextProviderFactory = value;
615+
_sspiContextProvider = value;
616616
}
617617
}
618618

@@ -684,7 +684,7 @@ public override string ConnectionString
684684
CheckAndThrowOnInvalidCombinationOfConnectionOptionAndAccessTokenCallback(connectionOptions);
685685
}
686686
}
687-
ConnectionString_Set(new SqlConnectionPoolKey(value, _credential, _accessToken, _accessTokenCallback, _sspiContextProviderFactory));
687+
ConnectionString_Set(new SqlConnectionPoolKey(value, _credential, _accessToken, _accessTokenCallback, _sspiContextProvider));
688688
_connectionString = value; // Change _connectionString value only after value is validated
689689
CacheConnectionStringProperties();
690690
}
@@ -744,7 +744,7 @@ public string AccessToken
744744

745745
_accessToken = value;
746746
// Need to call ConnectionString_Set to do proper pool group check
747-
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, _accessToken, null, _sspiContextProviderFactory));
747+
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, _accessToken, null, _sspiContextProvider));
748748
}
749749
}
750750

@@ -766,7 +766,7 @@ public Func<SqlAuthenticationParameters, CancellationToken, Task<SqlAuthenticati
766766
CheckAndThrowOnInvalidCombinationOfConnectionOptionAndAccessTokenCallback((SqlConnectionString)ConnectionOptions);
767767
}
768768

769-
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, null, value, _sspiContextProviderFactory));
769+
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, null, value, _sspiContextProvider));
770770
_accessTokenCallback = value;
771771
}
772772
}
@@ -1079,7 +1079,7 @@ public SqlCredential Credential
10791079
_credential = value;
10801080

10811081
// Need to call ConnectionString_Set to do proper pool group check
1082-
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, _accessToken, _accessTokenCallback, _sspiContextProviderFactory));
1082+
ConnectionString_Set(new SqlConnectionPoolKey(_connectionString, _credential, _accessToken, _accessTokenCallback, _sspiContextProvider));
10831083
}
10841084
}
10851085

@@ -2276,7 +2276,7 @@ public static void ChangePassword(string connectionString, string newPassword)
22762276
throw ADP.InvalidArgumentLength(nameof(newPassword), TdsEnums.MAXLEN_NEWPASSWORD);
22772277
}
22782278

2279-
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential: null, accessToken: null, accessTokenCallback: null, sspiContextProviderFactory: null);
2279+
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential: null, accessToken: null, accessTokenCallback: null, sspiContextProvider: null);
22802280

22812281
SqlConnectionString connectionOptions = SqlConnectionFactory.FindSqlConnectionOptions(key);
22822282
if (connectionOptions.IntegratedSecurity || connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated)
@@ -2332,7 +2332,7 @@ public static void ChangePassword(string connectionString, SqlCredential credent
23322332
throw ADP.InvalidArgumentLength(nameof(newSecurePassword), TdsEnums.MAXLEN_NEWPASSWORD);
23332333
}
23342334

2335-
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential, accessToken: null, accessTokenCallback: null, sspiContextProviderFactory: null);
2335+
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential, accessToken: null, accessTokenCallback: null, sspiContextProvider: null);
23362336

23372337
SqlConnectionString connectionOptions = SqlConnectionFactory.FindSqlConnectionOptions(key);
23382338

@@ -2378,7 +2378,7 @@ private static void ChangePassword(string connectionString, SqlConnectionString
23782378
{
23792379
con?.Dispose();
23802380
}
2381-
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential, accessToken: null, accessTokenCallback: null, sspiContextProviderFactory: null);
2381+
SqlConnectionPoolKey key = new SqlConnectionPoolKey(connectionString, credential, accessToken: null, accessTokenCallback: null, sspiContextProvider: null);
23822382

23832383
SqlConnectionFactory.SingletonInstance.ClearPool(key);
23842384
}

0 commit comments

Comments
 (0)