using Microsoft.IdentityModel.Clients.ActiveDirectory; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.Web.SQLServer { public class SQLServerManager { private String _service_root = $"https://login.microsoftonline.com/{WebConfig.TENANT_ID}"; public AuthenticationResult GetAccessToken() { var authContext = new AuthenticationContext(_service_root); authContext.TokenCache.Clear(); ClientCredential clientCredentials = new ClientCredential(WebConfig.CLIENT_ID, WebConfig.APP_SECRET); AuthenticationResult authResult = authContext.AcquireTokenAsync("https://database.windows.net/", clientCredentials).Result; return authResult; } public SqlConnection CreateSqlConnection(String accessToken, String catalog) { SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder.DataSource = "twine.database.windows.net"; builder.InitialCatalog = catalog; builder.MultipleActiveResultSets = true; builder.ApplicationName = "EntityFramework"; SqlConnection sqlConnection = new SqlConnection(builder.ConnectionString); sqlConnection.AccessToken = accessToken; return sqlConnection; } } }