Compartilhar via


Conectar-se ao Banco de Dados SQL do Azure com 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 Active Directory).

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

Observação

O Microsoft Entra ID era anteriormente conhecido como Azure Active Directory (Azure AD).

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

A autenticação Active Directory Interactive dá suporte à autenticação multifator usando Microsoft.Data.SqlClient para se conectar a fontes de dados SQL do Azure. Em um programa cliente C#, o valor enum orienta o sistema a 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 verá 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 for federado no Microsoft Entra ID, essa caixa de diálogo não aparecerá, pois 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 em sua conta será exibida.

  • Na primeira vez que um usuário percorre a autenticação multifator, o sistema exibe uma caixa de diálogo solicitando um número de telefone celular para o qual enviar mensagens de texto. Cada mensagem fornece o código de verificação que o usuário deverá digitar na caixa de diálogo seguinte.

  • 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 Usar a autenticação multifator do Microsoft Entra.

Dica

Você pode pesquisar APIs do .NET Framework com a página da ferramenta do navegador da API .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 SQL Server 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 do Microsoft Entra ID para o servidor.

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

Para obter mais informações sobre usuários e administradores do Microsoft Entra para o Banco de Dados SQL do Azure, confira 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 do C# se baseia no namespace Microsoft.Data.SqlClient. Para obter mais informações, consulte Usar a autenticação do Microsoft Entra com SqlClient.

Observação

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

Verificar com o SQL Server Management Studio

Para executar o exemplo do C#, é uma boa ideia verificar se a instalação e as configurações estão corretas no SSMS (SQL Server Management Studio). Qualquer falha do programa C# então pode ser limitada ao código-fonte.

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

Execute o SSMS no mesmo computador e na mesma compilação em que você planeja executar o programa C#. Para este teste, qualquer modo de Autenticação está bem. Se não houver nenhuma indicação de que o servidor não está aceitando seu endereço IP, confira as regras de firewall no nível de servidor e no nível do banco de dados para obter ajuda.

Verificar a autenticação multifator do Microsoft Entra

Execute o SSMS novamente, dessa vez com a Autenticação definida como Active Directory – Universal com MFA. Essa opção exige o SSMS versão 18.6 ou posterior.

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

Observação

Para versões do SSMS anteriores à 18.x, os usuários convidados devem fornecer o nome de domínio ou a 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 encontrar o nome de domínio no portal do Azure, selecione Microsoft Entra ID>Nomes de domínio personalizados. No programa C# de exemplo, não é necessário fornecer um nome de domínio.

Exemplo de código C#

Observação

Se você estiver usando o .NET Core, será necessário usar o namespace Microsoft.Data.SqlClient. Para obter mais informações, confira 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óximas etapas