public static void ConnectionSpeed() { var connString = DataTestUtility.AADPasswordConnectionString; //Ensure server endpoints are warm using (var connectionDrill = new SqlConnection(connString)) { connectionDrill.Open(); } SqlConnection.ClearAllPools(); ActiveDirectoryAuthenticationProvider.ClearUserTokenCache(); Stopwatch firstConnectionTime = new Stopwatch(); Stopwatch secondConnectionTime = new Stopwatch(); using (var connectionDrill = new SqlConnection(connString)) { firstConnectionTime.Start(); connectionDrill.Open(); firstConnectionTime.Stop(); using (var connectionDrill2 = new SqlConnection(connString)) { secondConnectionTime.Start(); connectionDrill2.Open(); secondConnectionTime.Stop(); } } // Subsequent AAD connections within a short timeframe should use an auth token cached from the connection pool // Second connection speed in tests was typically 10-15% of the first connection time. Using 30% since speeds may vary. Assert.True(((double)secondConnectionTime.ElapsedMilliseconds / firstConnectionTime.ElapsedMilliseconds) < 0.30, $"Second AAD connection too slow ({secondConnectionTime.ElapsedMilliseconds}ms)! (More than 30% of the first ({firstConnectionTime.ElapsedMilliseconds}ms).)"); }
public void CustomActiveDirectoryProviderTest_AppClientId_DeviceFlowCallback() { SqlAuthenticationProvider authProvider = new ActiveDirectoryAuthenticationProvider(CustomDeviceFlowCallback, Guid.NewGuid().ToString()); SqlAuthenticationProvider.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, authProvider); Assert.Equal(authProvider, SqlAuthenticationProvider.GetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow)); }
public void CustomActiveDirectoryProviderTest() { SqlAuthenticationProvider authProvider = new ActiveDirectoryAuthenticationProvider(CustomDeviceFlowCallback); SqlAuthenticationProvider.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, authProvider); Assert.Equal(authProvider, SqlAuthenticationProvider.GetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow)); }
public static void GetAccessTokenByPasswordTest() { // Clear token cache for code coverage. ActiveDirectoryAuthenticationProvider.ClearUserTokenCache(); using (SqlConnection connection = new SqlConnection(DataTestUtility.AADPasswordConnectionString)) { connection.Open(); Assert.True(connection.State == System.Data.ConnectionState.Open); } }
static SqlAuthenticationProviderManager() { var activeDirectoryAuthProvider = new ActiveDirectoryAuthenticationProvider(); Instance = new SqlAuthenticationProviderManager(); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryPassword, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryIntegrated, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); }
public static void Main() { SqlAuthenticationProvider authProvider = new ActiveDirectoryAuthenticationProvider(CustomDeviceFlowCallback); SqlAuthenticationProvider.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, authProvider); using (SqlConnection sqlConnection = new SqlConnection("Server=<myserver>.database.windows.net;Authentication=Active Directory Device Code Flow;Database=<db>;")) { sqlConnection.Open(); Console.WriteLine("Connected successfully!"); } }
static SqlAuthenticationProviderManager() { var azureManagedIdentityAuthenticationProvider = new AzureManagedIdentityAuthenticationProvider(); Instance = new SqlAuthenticationProviderManager(); var activeDirectoryAuthProvider = new ActiveDirectoryAuthenticationProvider(Instance._applicationClientId); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryPassword, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryIntegrated, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryServicePrincipal, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, activeDirectoryAuthProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryManagedIdentity, azureManagedIdentityAuthenticationProvider); Instance.SetProvider(SqlAuthenticationMethod.ActiveDirectoryMSI, azureManagedIdentityAuthenticationProvider); }
public static void Main() { // Supported for all authentication modes supported by ActiveDirectoryAuthenticationProvider ActiveDirectoryAuthenticationProvider provider = new ActiveDirectoryAuthenticationProvider("<application_client_id>"); if (provider.IsSupported(SqlAuthenticationMethod.ActiveDirectoryInteractive)) { SqlAuthenticationProvider.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, provider); } using (SqlConnection sqlConnection = new SqlConnection("Server=<myserver>.database.windows.net;Authentication=Active Directory Interactive;Database=<db>;")) { sqlConnection.Open(); Console.WriteLine("Connected successfully!"); } }