Share via


Conectar-se ao Banco de Dados SQL do Azure com a autenticação multifator do Microsoft Entra

Aplica-se a:Banco de Dados SQL do Azure

Este artigo fornece um programa C# que se conecta ao Banco de Dados SQL do Azure. O programa usa autenticação de modo interativo, que dá suporte à autenticação multifator usando o Microsoft Entra ID (anteriormente Azure Ative Directory).

Para obter mais informações sobre o suporte à autenticação multifator para ferramentas SQL, consulte Usando a autenticação multifator do Microsoft Entra.

Nota

Microsoft Entra ID é o novo nome para o Azure Ative Directory (Azure AD). Estamos atualizando a documentação neste momento.

Autenticação multifator para o Banco de Dados SQL do Azure

Active Directory Interactive a autenticação dá suporte à autenticação multifator usando Microsoft.Data.SqlClient para se conectar a fontes de dados SQL do Azure. Em um programa C# cliente, o valor enum direciona o sistema para usar o modo interativo Microsoft Entra que dá suporte à autenticação multifator para se conectar ao Banco de Dados SQL do Azure. O usuário que executa o programa vê as seguintes caixas de diálogo:

  • Uma caixa de diálogo que exibe um nome de usuário do Microsoft Entra e solicita a senha do usuário.

    Se o domínio do usuário estiver federado com o Microsoft Entra ID, a caixa de diálogo não será exibida, porque nenhuma senha será necessária.

    Se a política do Microsoft Entra impuser autenticação multifator ao usuário, uma caixa de diálogo para entrar na sua conta será exibida.

  • A primeira vez que um usuário passa pela autenticação multifator, o sistema exibe uma caixa de diálogo que solicita um número de telefone celular para enviar mensagens de texto. Cada mensagem fornece o código de verificação que o usuário deve inserir na próxima caixa de diálogo.

  • Uma caixa de diálogo que solicita um código de verificação de autenticação multifator, que o sistema enviou para um telefone celular.

Para obter informações sobre como configurar o Microsoft Entra ID para exigir autenticação multifator, consulte Introdução à autenticação multifator do Microsoft Entra na nuvem.

Para obter capturas de tela dessas caixas de diálogo, consulte Usando a autenticação multifator do Microsoft Entra.

Gorjeta

Você pode pesquisar APIs do .NET Framework com a página da ferramenta Navegador da API do .NET.

Você também pode pesquisar diretamente com o parâmetro opcional ?term=<search value>.

Pré-requisito

Antes de começar, você deve ter um servidor SQL lógico criado e disponível.

Definir um administrador do Microsoft Entra para o seu servidor

Para que o exemplo de C# seja executado, um administrador de servidor lógico precisa atribuir um administrador do Microsoft Entra a partir do ID do Microsoft Entra para o seu servidor .

No portal do Azure, na página SQL Server, selecione Microsoft Entra ID no menu de recursos e, em seguida, selecione Definir administrador.

Para obter mais informações sobre administradores e usuários do Microsoft Entra para o Banco de Dados SQL do Azure, consulte as capturas de tela em Configurar e gerenciar a autenticação do Microsoft Entra com o Banco de Dados SQL.

Microsoft.Data.SqlClient

O exemplo C# depende do namespace Microsoft.Data.SqlClient . Para obter mais informações, consulte Usando a autenticação do Microsoft Entra com SqlClient.

Nota

System.Data.SqlClient usa a Biblioteca de Autenticação do Ative Directory do Azure (ADAL), que foi preterida. Se você estiver usando o namespace System.Data.SqlClient para autenticação do Microsoft Entra, migre aplicativos para Microsoft.Data.SqlClient e a Microsoft Authentication Library (MSAL). Para obter mais informações sobre como usar a autenticação do Microsoft Entra com SqlClient, consulte Usando a autenticação do Microsoft Entra com SqlClient.

Verificar com o SQL Server Management Studio

Antes de executar o exemplo em C#, é recomendável verificar se a instalação e as configurações estão corretas no SQL Server Management Studio (SSMS). Qualquer falha do programa C# pode ser reduzida ao código-fonte.

Verificar endereços IP de firewall no nível de servidor

Execute o SSMS a partir do mesmo computador, no mesmo edifício, onde planeia executar o exemplo C#. Para este teste, qualquer modo de autenticação é OK. Se houver alguma indicação de que o servidor não está aceitando seu endereço IP, consulte Regras de firewall no nível do servidor e no nível do banco de dados para obter ajuda.

Verificar a autenticação multifator do Microsoft Entra

Execute o SSMS novamente, desta vez com a Autenticação definida como Azure Ative Directory - Universal com MFA. Esta opção requer o SSMS versão 18.6 ou posterior.

Para obter mais informações, consulte Usando a autenticação multifator do Microsoft Entra.

Nota

Para versões do SSMS anteriores à 18.x, os usuários convidados devem fornecer o nome de domínio ou ID de locatário do Microsoft Entra para o banco de dados: Selecione Opções>Nome de domínio do AD ou ID do locatário. O SSMS 18.x e posterior reconhece automaticamente o locatário.

Para localizar o nome de domínio no portal do Azure, selecione Nomes de domínio personalizados do Microsoft Entra ID>. No programa de exemplo em C#, não é necessário fornecer um nome de domínio.

Exemplo de código C#

Nota

Se você estiver usando o .NET Core, você desejará usar o namespace Microsoft.Data.SqlClient . Para obter mais informações, consulte o blog a seguir.

Este é um exemplo de código-fonte C#.


using System;
using Microsoft.Data.SqlClient;

public class Program
{
    public static void Main(string[] args)
    {
        // Use your own server, database, and user ID.
        // Connetion string - user ID is not provided and is asked interactively.
        string ConnectionString = @"Server=<your server>.database.windows.net; Authentication=Active Directory Interactive; Database=<your database>";


        using (SqlConnection conn = new SqlConnection(ConnectionString))

        {
            conn.Open();
            Console.WriteLine("ConnectionString2 succeeded.");
            using (var cmd = new SqlCommand("SELECT @@Version", conn))
            {
                Console.WriteLine("select @@version");
                var result = cmd.ExecuteScalar();
                Console.WriteLine(result.ToString());
            }

        }
        Console.ReadKey();

    }
}

 

Este é um exemplo da saída de teste C#.

ConnectionString2 succeeded.
select @@version
Microsoft SQL Azure (RTM) - 12.0.2000.8
   ...

Próximos passos