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
...