Skip to content

Commit e9c04ad

Browse files
committed
consolidate builder for sqlauthparameters and use serverSpn as resource
1 parent 7f1f800 commit e9c04ad

File tree

4 files changed

+26
-32
lines changed

4 files changed

+26
-32
lines changed

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2435,13 +2435,10 @@ internal SqlFedAuthToken GetFedAuthToken(SqlFedAuthInfo fedAuthInfo)
24352435
try
24362436
{
24372437
var authParamsBuilder = new SqlAuthenticationParameters.Builder(
2438-
authenticationMethod: ConnectionOptions.Authentication,
2439-
resource: fedAuthInfo.spn,
2440-
authority: fedAuthInfo.stsurl,
2441-
serverName: ConnectionOptions.DataSource,
2442-
databaseName: ConnectionOptions.InitialCatalog)
2443-
.WithConnectionId(_clientConnectionId)
2444-
.WithConnectionTimeout(ConnectionOptions.ConnectTimeout);
2438+
connection: this,
2439+
resource: fedAuthInfo.spn,
2440+
authority: fedAuthInfo.stsurl);
2441+
24452442
switch (ConnectionOptions.Authentication)
24462443
{
24472444
case SqlAuthenticationMethod.ActiveDirectoryIntegrated:

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

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
using System;
66
using System.Collections.Generic;
7-
using System.Data;
87
using System.Data.Common;
98
using System.Diagnostics;
109
using System.Diagnostics.CodeAnalysis;
@@ -15,11 +14,11 @@
1514
using System.Text;
1615
using System.Threading;
1716
using System.Threading.Tasks;
17+
using System.Transactions;
1818
using Microsoft.Data.Common;
1919
using Microsoft.Data.ProviderBase;
2020
using Microsoft.Data.SqlClient.ConnectionPool;
2121
using Microsoft.Identity.Client;
22-
using System.Transactions;
2322

2423

2524
namespace Microsoft.Data.SqlClient
@@ -137,7 +136,7 @@ sealed internal class SqlInternalConnectionTds : SqlInternalConnection, IDisposa
137136
// The Federated Authentication returned by TryGetFedAuthTokenLocked or GetFedAuthToken.
138137
SqlFedAuthToken _fedAuthToken = null;
139138
internal byte[] _accessTokenInBytes;
140-
internal readonly Func<SqlAuthenticationParameters, CancellationToken,Task<SqlAuthenticationToken>> _accessTokenCallback;
139+
internal readonly Func<SqlAuthenticationParameters, CancellationToken, Task<SqlAuthenticationToken>> _accessTokenCallback;
141140

142141
private readonly ActiveDirectoryAuthenticationTimeoutRetryHelper _activeDirectoryAuthTimeoutRetryHelper;
143142

@@ -1651,12 +1650,12 @@ private void OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectio
16511650
else
16521651
{
16531652
_timeoutErrorInternal.SetFailoverScenario(false); // not a failover scenario
1654-
LoginNoFailover(dataSource,
1655-
newPassword,
1656-
newSecurePassword,
1653+
LoginNoFailover(dataSource,
1654+
newPassword,
1655+
newSecurePassword,
16571656
redirectedUserInstance,
1658-
connectionOptions,
1659-
credential,
1657+
connectionOptions,
1658+
credential,
16601659
timeout);
16611660
}
16621661

@@ -2625,7 +2624,7 @@ internal void OnFedAuthInfo(SqlFedAuthInfo fedAuthInfo)
26252624

26262625
if (_newDbConnectionPoolAuthenticationContext != null)
26272626
{
2628-
_dbConnectionPool.AuthenticationContexts.TryAdd(_dbConnectionPoolAuthenticationContextKey, _newDbConnectionPoolAuthenticationContext);
2627+
_dbConnectionPool.AuthenticationContexts.TryAdd(_dbConnectionPoolAuthenticationContextKey, _newDbConnectionPoolAuthenticationContext);
26292628
}
26302629
}
26312630
}
@@ -2739,13 +2738,10 @@ internal SqlFedAuthToken GetFedAuthToken(SqlFedAuthInfo fedAuthInfo)
27392738
try
27402739
{
27412740
var authParamsBuilder = new SqlAuthenticationParameters.Builder(
2742-
authenticationMethod: ConnectionOptions.Authentication,
2741+
connection: this,
27432742
resource: fedAuthInfo.spn,
2744-
authority: fedAuthInfo.stsurl,
2745-
serverName: ConnectionOptions.DataSource,
2746-
databaseName: ConnectionOptions.InitialCatalog)
2747-
.WithConnectionId(_clientConnectionId)
2748-
.WithConnectionTimeout(ConnectionOptions.ConnectTimeout);
2743+
authority: fedAuthInfo.stsurl);
2744+
27492745
switch (ConnectionOptions.Authentication)
27502746
{
27512747
case SqlAuthenticationMethod.ActiveDirectoryIntegrated:

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SSPI/SSPIContextProvider.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,10 @@ private bool RunGenerateSspiClientContext(ReadOnlySpan<byte> incomingBlob, IBuff
7575
private static SqlAuthenticationParameters CreateSqlAuthParams(SqlInternalConnectionTds connection, string serverSpn)
7676
{
7777
var auth = new SqlAuthenticationParameters.Builder(
78-
authenticationMethod: connection.ConnectionOptions.Authentication,
79-
resource: null,
80-
authority: null,
81-
serverName: serverSpn,
82-
connection.ConnectionOptions.InitialCatalog);
78+
connection: connection,
79+
resource: serverSpn,
80+
authority: null);
81+
8382

8483
if (connection.ConnectionOptions.UserID is { } userId)
8584
{

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlAuthenticationParameters.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ protected SqlAuthenticationParameters(
4949
string authority,
5050
string userId,
5151
string password,
52-
Guid connectionId,
52+
Guid connectionId,
5353
int connectionTimeout)
5454
{
5555
AuthenticationMethod = authenticationMethod;
@@ -149,11 +149,13 @@ public Builder WithConnectionTimeout(int timeout)
149149
return this;
150150
}
151151

152-
internal Builder(SqlAuthenticationMethod authenticationMethod, string resource, string authority, string serverName, string databaseName)
152+
internal Builder(SqlInternalConnectionTds connection, string resource, string authority)
153153
{
154-
_authenticationMethod = authenticationMethod;
155-
_serverName = serverName;
156-
_databaseName = databaseName;
154+
_authenticationMethod = connection.ConnectionOptions.Authentication;
155+
_serverName = connection.ConnectionOptions.DataSource;
156+
_databaseName = connection.ConnectionOptions.InitialCatalog;
157+
_connectionTimeout = connection.ConnectionOptions.ConnectTimeout;
158+
_connectionId = connection.ClientConnectionId;
157159
_resource = resource;
158160
_authority = authority;
159161
}

0 commit comments

Comments
 (0)