SqlAuthenticationProvider Класс

Определение

Определяет основное поведение поставщиков проверки подлинности и предоставляет базовый класс для производных классов.

public ref class SqlAuthenticationProvider abstract
public abstract class SqlAuthenticationProvider
type SqlAuthenticationProvider = class
Public MustInherit Class SqlAuthenticationProvider
Наследование
SqlAuthenticationProvider
Производный

Примеры

В следующем примере демонстрируется реализация настраиваемого объекта SqlAuthenticationProvider и предоставление того же значения sqlClient для переопределения режима проверки подлинности потока кода устройства:

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!");
            }
        }
    }
}

Комментарии

Производные классы должны предоставлять конструктор без параметров, если их можно создать из файла app.config.

Конструкторы

SqlAuthenticationProvider()

Определяет основное поведение поставщиков проверки подлинности и предоставляет базовый класс для производных классов.

Методы

AcquireTokenAsync(SqlAuthenticationParameters)

Получает токен безопасности из центра.

BeforeLoad(SqlAuthenticationMethod)

Этот метод вызывается непосредственно перед добавлением поставщика в реестр драйверов SQL.

BeforeUnload(SqlAuthenticationMethod)

Этот метод вызывается непосредственно перед удалением поставщика из реестра драйверов SQL.

GetProvider(SqlAuthenticationMethod)

Получает поставщик проверки подлинности по методу.

IsSupported(SqlAuthenticationMethod)

Указывает, поддерживается ли заданный метод проверки подлинности.

SetProvider(SqlAuthenticationMethod, SqlAuthenticationProvider)

Задает поставщик проверки подлинности по методу.

Применяется к