Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tutorial mostra como conectar um aplicativo do Serviço de Aplicativo do Azure a um banco de dados SQL do Azure back-end representando o usuário conectado, também chamado de fluxo em nome de. Para configurar esse fluxo, habilite a autenticação interna do Serviço de Aplicativo usando o provedor de identidade Microsoft Entra.
Esse método de conectividade é mais avançado do que a abordagem de identidade gerenciada no Tutorial: Acessar dados com identidade gerenciada e tem as seguintes vantagens em cenários corporativos:
- Elimina segredos de conexão com serviços back-end, assim como a abordagem de identidade gerenciada.
- Dá ao banco de dados back-end ou a outros serviços do Azure mais controle sobre quanto acesso conceder a quem.
- Permite que o aplicativo adapte sua apresentação de dados ao usuário conectado.
Neste tutorial, você adiciona a autenticação do Microsoft Entra a um aplicativo Web .NET que tem um back-end do Banco de Dados SQL do Azure. Você aprende a:
- Habilite a autenticação do Microsoft Entra para o Banco de Dados SQL do Azure.
- Desative outras opções de autenticação do Banco de dados SQL.
- Adicione o Microsoft Entra ID como o provedor de identidade para seu aplicativo.
- Configure a permissão de representação de usuário do Banco de dados SQL.
- Configure o Serviço de Aplicativo para fornecer um token de acesso utilizável para o Banco de Dados SQL.
- Acesse seu banco de dados SQL do Azure em nome do usuário conectado do Microsoft Entra.
Quando você conclui o tutorial, seu aplicativo se conecta com segurança ao Banco de dados SQL em nome do usuário conectado.
Nota
- O Microsoft Entra ID não é suportado para o SQL Server local.
- A autenticação do Microsoft Entra é diferente da autenticação integrada do Windows nos Serviços de Domínio (DS) do Ative Directory (AD) local. O AD DS e o Microsoft Entra ID usam protocolos de autenticação completamente diferentes. Para obter mais informações, consulte a documentação dos Serviços de Domínio Microsoft Entra.
Pré-requisitos
Ter acesso a um locatário do Microsoft Entra preenchido com usuários e grupos.
Conclua o tutorial em Tutorial: Criar um aplicativo ASP.NET Core e Banco de Dados SQL no Serviço de Aplicativo do Azure e use o aplicativo concluído para este tutorial.
Como alternativa, adapte as etapas e use seu próprio aplicativo .NET com o Banco de dados SQL. As etapas neste tutorial suportam as seguintes versões do .NET:
- .NET Framework 4.8 e superior
- .NET 6.0 e superior
Entre no Azure Cloud Shell ou prepare seu ambiente para usar a CLI do Azure.
Utilize o ambiente Bash no Azure Cloud Shell. Para mais informações, veja Get started with Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale o CLI do Azure. Se estiver a usar Windows ou macOS, considere executar o Azure CLI num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga os passos exibidos no seu terminal. Para outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão do Azure CLI na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a CLI do Azure.
Execute az version para descobrir a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
1. Configurar o servidor de banco de dados com autenticação Microsoft Entra
Habilite a autenticação do Microsoft Entra para o banco de dados SQL do Azure atribuindo um usuário do Microsoft Entra como administrador do servidor SQL do Azure. O administrador do Microsoft Entra deve ser um usuário criado, importado, sincronizado ou convidado para o Microsoft Entra ID. O usuário do Microsoft Entra pode não ser o mesmo que o usuário da conta da Microsoft para a assinatura do Azure.
Para adicionar o usuário do Microsoft Entra ID como administrador do servidor SQL do Azure, execute os seguintes comandos da CLI do Azure.
Use
az ad user listcom odisplay-nameparâmetro ,filterouupnpara obter a ID do objeto para o usuário do Microsoft Entra ID que você deseja tornar administrador. Por exemplo, o comando a seguir lista informações para um usuário do Microsoft Entra ID com odisplay-namede Sobrenome de Nome.az ad user list --display-name "Firstname Lastname"Copie o
idvalor da saída para usar na próxima etapa.Gorjeta
Você pode executar
az ad user listautônomo para mostrar informações para todos os usuários no diretório Microsoft Entra.Adicione o usuário do Microsoft Entra ID como administrador em seu servidor SQL do Azure usando
az sql server ad-admin createcom oobject-idparâmetro. No comando a seguir, substitua<group-name>pelo nome do grupo de recursos do servidor,<server-name>pelo nome do servidor menos o sufixo.database.windows.nete<entra-id>pelaidsaída do comando anterioraz ad user list.az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>Restrinja a autenticação do servidor de banco de dados somente à autenticação do Microsoft Entra. Esta etapa desabilita a autenticação de nome de usuário e senha do SQL.
az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
- Para obter mais informações sobre como criar um usuário do Microsoft Entra, consulte Adicionar ou excluir usuários usando o Microsoft Entra ID.
- Para obter mais informações sobre usuários permitidos do Microsoft Entra para o Banco de dados SQL, consulte Recursos e limitações do Microsoft Entra no Banco de dados SQL.
- Para obter mais informações sobre como adicionar um administrador do servidor SQL do Azure, consulte Provisionar um administrador do Microsoft Entra para seu servidor.
2. Habilite a autenticação do Microsoft Entra ID para seu aplicativo
Adicione o Microsoft Entra ID como um provedor de identidade para seu aplicativo. Para obter mais informações, consulte Configurar a autenticação Microsoft Entra para a sua aplicação dos Serviços de Aplicações.
Na página do portal do Azure para seu aplicativo, selecione Autenticação em Configurações no menu de navegação esquerdo.
Na página Autenticação , selecione Adicionar provedor de identidade ou selecione Adicionar provedor na seção Provedor de identidade .
Na página Adicionar um provedor de identidade , selecione Microsoft como provedor.
Para Expiração do segredo do cliente, selecione uma das opções da lista suspensa, como Recomendado: 180 dias.
Mantenha todas as configurações padrão e selecione Adicionar.
Nota
Se você reconfigurar as configurações de autenticação do aplicativo, os tokens no repositório de tokens podem não ser regenerados a partir das novas configurações. Para garantir que seus tokens se regenerem, saia e entre novamente em seu aplicativo. Um método fácil é usar seu navegador no modo privado. Feche e reabra o navegador no modo privado depois de alterar as configurações em seus aplicativos.
3. Configurar a representação do usuário do Banco de dados SQL
Conceda permissões ao seu aplicativo para acessar o Banco de Dados SQL em nome do usuário conectado do Microsoft Entra.
Na página Autenticação do aplicativo, selecione o nome do aplicativo em Provedor de identidade.
A página de registro do aplicativo é aberta. Esse registro foi gerado automaticamente quando você adicionou o provedor Microsoft Entra.
Selecione Permissões de API em Gerenciar no menu de navegação à esquerda.
Na página Permissões da API , selecione Adicionar uma permissão.
Na tela Solicitar permissões da API , selecione a guia APIs que minha organização usa .
Insira o Banco de Dados SQL do Azure na caixa de pesquisa e selecione o resultado.
Em Que tipo de permissões seu aplicativo requer, selecione Permissões delegadas, marque a caixa de seleção ao lado de user_impersonation e selecione Adicionar permissões.
O registro do aplicativo no Microsoft Entra agora tem as permissões necessárias para se conectar ao Banco de dados SQL representando o usuário conectado.
4. Configurar o Serviço de Aplicativo para retornar um token de acesso utilizável
Para configurar seu aplicativo para fornecer um token de acesso utilizável para o Banco de dados SQL, adicione https://database.windows.net/user_impersonation como um scope ao provedor Microsoft Entra do loginParametersaplicativo. O comando a seguir adiciona a propriedade com escopos loginParameters personalizados às configurações do provedor de login identidade do Microsoft Entra.
Dos escopos solicitados, o Serviço de Aplicativo já solicita openide emailprofileos escopos por padrão. O offline_access escopo está incluído para que você possa atualizar tokens. Para obter mais informações, consulte Escopos do OpenID Connect.
O https://database.windows.net/user_impersonation escopo refere-se ao Banco de Dados SQL do Azure e fornece um JSON Web Token (JWT) que especifica o Banco de Dados SQL como o destinatário do token. Este comando é usado jq para processamento JSON, que já está instalado no Cloud Shell.
authSettings=$(az webapp auth show --resource-group <group-name> --name <app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.login += {"loginParameters":["scope=openid profile email offline_access https://database.windows.net/user_impersonation"]}')
az webapp auth set --resource-group <group-name> --name <app-name> --body "$authSettings"
Gorjeta
Para configurar o escopo necessário usando uma interface Web em vez da CLI do Azure, use Configurar o provedor Microsoft Entra para fornecer tokens de atualização, adicionando https://database.windows.net/user_impersonation aos escopos solicitados.
Seu aplicativo agora está configurado para gerar um token de acesso aceito pelo Banco de dados SQL.
Nota
Os tokens de acesso expiram após algum tempo. Para obter informações sobre como atualizar seus tokens de acesso sem exigir que os usuários se autentiquem novamente com seu aplicativo, consulte Atualizar tokens de autenticação.
5. Use o token de acesso no código do seu aplicativo
Atualize o código do aplicativo para adicionar o token de acesso fornecido pela autenticação do Serviço de Aplicativo ao objeto de conexão.
Nota
Este código não funciona localmente. Para obter mais informações e alternativas para depuração local, consulte Depurar localmente ao usar a autenticação do Serviço de Aplicativo.
Em seu objeto em DatabaseContext.cs
DbContextou outro arquivo que configure o contexto do banco de dados, altere o construtor padrão para adicionar o token de acesso do Microsoft Entra ID ao objeto de conexão.public MyDatabaseContext (DbContextOptions<MyDatabaseContext> options, IHttpContextAccessor accessor) : base(options) { var conn = Database.GetDbConnection() as SqlConnection; conn.AccessToken = accessor.HttpContext.Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"]; }Se você tiver uma cadeia de conexão chamada
defaultConnectionno Serviço de Aplicativo que usa a autenticação SQL com um nome de usuário e senha, use o comando a seguir para remover os segredos de conexão. Substitua<group-name>,<app-name>,<db-server-name>, e<db-name>pelos seus valores.az webapp config connection-string set --resource-group <group-name> --name <app-name> --connection-string-type SQLAzure --settings defaultConnection="server=tcp:<db-server-name>.database.windows.net;database=<db-name>;"
6. Publique as alterações
Se você usou o Visual Studio Code no navegador para fazer alterações de código na bifurcação do GitHub, selecione Controle do código-fonte no menu à esquerda. Insira uma mensagem de confirmação como OBO connect e selecione Confirmar.
O commit desencadeia uma implantação do GitHub Actions para o App Service. Aguarde alguns minutos até que a implantação seja concluída.
Você também pode publicar suas alterações no Git Bash usando os seguintes comandos:
git commit -am "configure managed identity"
git push azure main
Se o seu código estiver no Visual Studio:
Clique com o botão direito do mouse em seu projeto no Gerenciador de Soluções e selecione Publicar.
Na página Publicar , selecione Publicar.
Quando a página do novo aplicativo mostra seu aplicativo, o aplicativo está se conectando ao banco de dados SQL do Azure em nome do usuário conectado do Microsoft Entra. Você deve ser capaz de usar e editar seu aplicativo como de costume.
7. Limpar os recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Quando não precisar mais desses recursos, exclua o grupo de recursos executando o seguinte comando:
az group delete --name <group-name>
Este comando pode levar algum tempo para ser executado.
Perguntas mais frequentes
- Por que recebo um erro "Falha de login para o usuário '<entidade identificada por> token'"?
- Como faço para adicionar outros usuários ou grupos do Microsoft Entra no Banco de Dados SQL do Azure?
- Como depurar localmente ao usar a autenticação do App Service?
- O que acontece quando os tokens de acesso expiram?
Por que recebo um erro "Falha de login para o usuário '<entidade identificada por> token'"?
As causas mais comuns para um Login failed for user '<token-identified principal>' erro são:
- Autenticação do Microsoft Entra não configurada para o banco de dados SQL do Azure. Consulte Configurar o servidor de banco de dados com a autenticação do Microsoft Entra.
- Nenhum token válido no cabeçalho da
X-MS-TOKEN-AAD-ACCESS-TOKENsolicitação. Este código não funciona em ambientes locais. Para obter mais informações e alternativas, consulte Depurar localmente ao usar a autenticação do Serviço de Aplicativo. - O usuário não tem permissão para se conectar ao banco de dados. Para adicionar usuários e permissões, consulte Adicionar outros usuários ou grupos do Microsoft Entra no Banco de Dados SQL do Azure.
Como faço para adicionar outros usuários ou grupos do Microsoft Entra no Banco de Dados SQL do Azure?
Para adicionar mais usuários ou grupos, conecte-se ao servidor de banco de dados usando sqlcmd ou SQL Server Management Studio (SSMS) e crie usuários de banco de dados contidos mapeados para identidades do Microsoft Entra.
O exemplo Transact-SQL a seguir adiciona uma identidade do Microsoft Entra ao SQL Server e fornece à identidade algumas funções de banco de dados:
CREATE USER [<user-or-group-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_datawriter ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<user-or-group-name>];
GO
Como faço para depurar localmente ao usar a autenticação do App Service?
Como a autenticação do Serviço de Aplicativo é um recurso do Azure, o código neste tutorial não funciona em seu ambiente local. Ao contrário de um aplicativo em execução no Azure, seu código local não se beneficia do middleware de autenticação do Serviço de Aplicativo. Você pode usar as seguintes alternativas para depuração local:
- Conecte-se ao Banco de Dados SQL a partir do seu ambiente local com
Active Directory Interactiveautenticação. Esse fluxo de autenticação não entra no usuário em si, mas se conecta ao banco de dados back-end com o usuário conectado para que você possa testar a autorização do banco de dados localmente. - Copie manualmente o token de acesso em seu código no lugar do
X-MS-TOKEN-AAD-ACCESS-TOKENcabeçalho da solicitação. - Se você implantar a partir do Visual Studio, use a depuração remota do seu aplicativo do Serviço de Aplicativo.
O que acontece quando os tokens de acesso expiram?
O token de acesso expira ao fim de algum tempo. Para obter informações sobre como atualizar seus tokens de acesso sem exigir que os usuários se autentiquem novamente com seu aplicativo, consulte Atualizar tokens de provedor de identidade.
Conteúdo relacionado
- Tutorial: Conectar-se a bancos de dados do Azure a partir do Serviço de Aplicativo sem segredos usando uma identidade gerenciada
- Tutorial: Aceda ao Microsoft Graph a partir de uma aplicação .NET segura na qualidade de aplicativo
- Tutorial: Isolar a comunicação do back-end com a integração de Rede Virtual
- Mapear um nome DNS personalizado já existente para o Serviço de Aplicações do Azure