SqlAuthenticationProvider Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Definisce il comportamento principale dei provider di autenticazione e specifica una classe di base per le classi derivate.
public ref class SqlAuthenticationProvider abstract
public abstract class SqlAuthenticationProvider
type SqlAuthenticationProvider = class
Public MustInherit Class SqlAuthenticationProvider
- Ereditarietà
-
SqlAuthenticationProvider
- Derivato
Esempio
Nell'esempio seguente viene illustrato l'implementazione di un sqlAuthenticationProvider personalizzato e viene fornito lo stesso a SqlClient per eseguire l'override della modalità di autenticazione del flusso di codice del dispositivo:
using System;
using System.Threading.Tasks;
using Microsoft.Identity.Client;
using Microsoft.Data.SqlClient;
namespace CustomAuthenticationProviderExamples
{
/// <summary>
/// Example demonstrating creating a custom device code flow authentication provider and attaching it to the driver.
/// This is helpful for applications that wish to override the Callback for the Device Code Result implemented by the SqlClient driver.
/// </summary>
public class CustomDeviceCodeFlowAzureAuthenticationProvider : SqlAuthenticationProvider
{
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 bool IsSupported(SqlAuthenticationMethod authenticationMethod) => authenticationMethod.Equals(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow);
private Task CustomDeviceFlowCallback(DeviceCodeResult result)
{
Console.WriteLine(result.Message);
return Task.FromResult(0);
}
}
public class Program
{
public static void Main()
{
// Register our custom authentication provider class to override Active Directory Device Code Flow
SqlAuthenticationProvider.SetProvider(SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow, new CustomDeviceCodeFlowAzureAuthenticationProvider());
using (SqlConnection sqlConnection = new SqlConnection("Server=<myserver>.database.windows.net;Authentication=Active Directory Device Code Flow;Database=<db>;"))
{
sqlConnection.Open();
Console.WriteLine("Connected successfully!");
}
}
}
}
Commenti
Le classi derivate devono fornire un costruttore senza parametri se possono essere create istanze dal file di app.config.
Costruttori
SqlAuthenticationProvider() |
Definisce il comportamento principale dei provider di autenticazione e specifica una classe di base per le classi derivate. |
Metodi
AcquireTokenAsync(SqlAuthenticationParameters) |
Acquisisce un token di sicurezza dall'autorità. |
BeforeLoad(SqlAuthenticationMethod) |
Il metodo viene chiamato immediatamente prima che il provider sia aggiunto al Registro di sistema dei driver SQL. |
BeforeUnload(SqlAuthenticationMethod) |
Il metodo viene chiamato immediatamente prima che il provider sia rimosso dal Registro di sistema dei driver SQL. |
GetProvider(SqlAuthenticationMethod) |
Ottiene un provider di autenticazione in base al metodo. |
IsSupported(SqlAuthenticationMethod) |
Indica se il metodo di autenticazione specificato è supportato. |
SetProvider(SqlAuthenticationMethod, SqlAuthenticationProvider) |
Imposta un provider di autenticazione in base al metodo. |