public override async Task <SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters) { Console.WriteLine($"Sql Auth UserId={parameters.UserId}"); TokenCredential tokenCredential; if (parameters.UserId == "LOCALDEV") { tokenCredential = new InteractiveBrowserCredential(); } /* * else if (!string.IsNullOrEmpty(parameters.UserId)) * { * tokenCredential = new ManagedIdentityCredential(parameters.UserId); * } */ else { tokenCredential = new DefaultAzureCredential(); } var token = await tokenCredential.GetTokenAsync(new TokenRequestContext(new[] { "https://database.windows.net/.default" }), default); var sqlToken = new SqlAuthenticationToken(token.Token, token.ExpiresOn); return(sqlToken); }
public override async Task <SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters) { string s_defaultScopeSuffix = "/.default"; string scope = parameters.Resource.EndsWith(s_defaultScopeSuffix) ? parameters.Resource : parameters.Resource + s_defaultScopeSuffix; _ = parameters.ServerName; _ = parameters.DatabaseName; _ = parameters.ConnectionId; var cts = new CancellationTokenSource(); cts.CancelAfter(parameters.ConnectionTimeout * 1000); string[] scopes = new string[] { scope }; SecureString password = new SecureString(); foreach (char c in parameters.Password) { password.AppendChar(c); } password.MakeReadOnly(); AuthenticationResult result = await PublicClientApplicationBuilder.Create(_appClientId) .WithAuthority(parameters.Authority) .Build().AcquireTokenByUsernamePassword(scopes, parameters.UserId, password) .WithCorrelationId(parameters.ConnectionId) .ExecuteAsync(cancellationToken: cts.Token); return(new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn)); }
public override async Task <SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters) { var tokenRequestContext = new TokenRequestContext(AzureSqlScopes, tenantId: _tenandId); var tokenResult = await Credential.GetTokenAsync(tokenRequestContext, default); return(new SqlAuthenticationToken(tokenResult.Token, tokenResult.ExpiresOn)); }
public override async Task <SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters) { var tokenProvider = new AzureServiceTokenProvider(); var appAuthenticationResult = await tokenProvider .GetAuthenticationResultAsync(parameters.Resource) .ConfigureAwait(false); return(new SqlAuthenticationToken(appAuthenticationResult.AccessToken, appAuthenticationResult.ExpiresOn)); }
AcquireTokenAsync(SqlAuthenticationParameters parameters) { AuthenticationContext authContext = new AuthenticationContext(parameters.Authority); authContext.CorrelationId = parameters.ConnectionId; var result = await authContext.AcquireTokenAsync( parameters.Resource, // "https://database.windows.net/" _clientId, _redirectUri, new PlatformParameters(PromptBehavior.Auto), new UserIdentifier( parameters.UserId, UserIdentifierType.RequiredDisplayableId)); return new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn); }
public override async Task <SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters) { string clientId = "my-client-id"; string clientName = "My Application Name"; string s_defaultScopeSuffix = "/.default"; string[] scopes = new string[] { parameters.Resource.EndsWith(s_defaultScopeSuffix) ? parameters.Resource : parameters.Resource + s_defaultScopeSuffix }; IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId) .WithAuthority(parameters.Authority) .WithClientName(clientName) .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient") .Build(); AuthenticationResult result = await app.AcquireTokenWithDeviceCode(scopes, deviceCodeResult => CustomDeviceFlowCallback(deviceCodeResult)).ExecuteAsync(); return(new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn)); }
public override async Task <SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters) { var port = (this._port != 0) ? this._port : FindAvailableTcpPort(10000); var application = PublicClientApplicationBuilder.Create(this._clientId) .WithAuthority(parameters.Authority) .WithRedirectUri($"http://localhost:{port.ToString()}") .Build(); var scope = new[] { $"{parameters.Resource}/.default" }; var result = await application.AcquireTokenInteractive(scope) .WithCustomWebUi(this._webUi) .WithCorrelationId(parameters.ConnectionId) .WithLoginHint(parameters.UserId) .ExecuteAsync().ConfigureAwait(false); return(new SqlAuthenticationToken(result.AccessToken, result.ExpiresOn)); }
public override async Task <SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters) { var authResult = await _tokenProvider.GetAuthenticationResultAsync("https://database.windows.net/").ConfigureAwait(false); return(new SqlAuthenticationToken(authResult.AccessToken, authResult.ExpiresOn)); }
/// <summary> /// Acquires an access token for SQL using AzureServiceTokenProvider with the given SQL authentication parameters. /// </summary> /// <param name="parameters">The parameters needed in order to obtain a SQL access token</param> /// <returns></returns> public override async Task <SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters) { var appAuthParameters = new SqlAppAuthenticationParameters(parameters); return(await AcquireTokenAsync(appAuthParameters).ConfigureAwait(false)); }
public SqlAppAuthenticationParameters(SqlAuthenticationParameters parameters) { Authority = parameters.Authority; Resource = parameters.Resource; UserId = parameters.UserId; }