Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você 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 de back-end representando o usuário conectado, também chamado de fluxo em nome. Para configurar esse fluxo, você habilita a autenticação interna do Serviço de Aplicativo usando o provedor de identidade do 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 para serviços de back-end, assim como a abordagem de identidade gerenciada.
- Fornece 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 para o usuário conectado.
Neste tutorial, você adicionará a autenticação do Microsoft Entra a um aplicativo Web .NET que tenha um back-end do Banco de Dados SQL do Azure. Você aprenderá como:
- Habilite a autenticação do Microsoft Entra para o Banco de Dados SQL do Azure.
- Desabilite outras opções de autenticação do Banco de Dados SQL.
- Adicione a ID do Microsoft Entra 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 o 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.
Observação
- Não há suporte para a ID do Microsoft Entra para o SQL Server local.
- A autenticação do Microsoft Entra é diferente da autenticação integrada do Windows nos DS (Serviços de Domínio) do Active Directory (AD) local. O AD DS e o Microsoft Entra ID usam protocolos de autenticação completamente diferentes. Para saber mais, confira Sincronização com escopo do Microsoft Entra Domain Services.
Pré-requisitos
Tenha acesso a um locatário do Microsoft Entra preenchido com usuários e grupos.
Conclua o tutorial no Tutorial: crie 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 dão suporte às 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 obter mais informações, confira Introdução ao Azure Cloud Shell.
Se você preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se você estiver executando no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira 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 as etapas exibidas em seu terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar 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 a autenticação do 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 SQL Server do Azure. O administrador do Microsoft Entra deve ser um usuário que seja criado, importado, sincronizado ou convidado para a ID do Microsoft Entra. 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 da ID do Microsoft Entra como administrador do SQL Server 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 da ID do Microsoft Entra que você deseja tornar administrador. Por exemplo, o comando a seguir lista informações para um usuário da ID do Microsoft Entra com odisplay-namenome sobrenome.az ad user list --display-name "Firstname Lastname"Copie o
idvalor da saída a ser usada na próxima etapa.Dica
Você pode executar
az ad user listautônomo para mostrar informações para todos os usuários no diretório do Microsoft Entra.Adicione o usuário da ID do Microsoft Entra como administrador em seu SQL Server do Azure usando
az sql server ad-admin createoobject-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.database.windows.netsufixo e<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 somente a autenticação do servidor de banco de dados à autenticação do Microsoft Entra. Esta etapa desabilita o nome de usuário e a autenticação de 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 a ID do Microsoft Entra.
- Para obter mais informações sobre os usuários permitidos do Microsoft Entra para o Banco de Dados SQL, consulte os recursos e limitações do Microsoft Entra no Banco de Dados SQL.
- Para obter mais informações sobre como adicionar um administrador do SQL Server do Azure, consulte Provisionar um administrador do Microsoft Entra para seu servidor.
2. Habilitar a autenticação da ID do Microsoft Entra para seu aplicativo
Adicione a ID do Microsoft Entra como um provedor de identidade para seu aplicativo. Para obter mais informações, consulte Configurar a autenticação do Microsoft Entra no seu aplicativo dos Serviços de Aplicativos.
Na página do portal do Azure para seu aplicativo, selecione Autenticação em Configurações no menu de navegação à esquerda.
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 a Microsoft como provedor.
Para a expiração do segredo do cliente, selecione uma das opções de lista suspensa, como Recomendado: 180 dias.
Mantenha todas as configurações padrão e selecione Adicionar.
Observação
Se você reconfigurar as configurações de autenticação do aplicativo, os tokens no repositório de tokens poderão não ser regenerados das novas configurações. Para garantir que seus tokens se regenerizem, 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 de usuário do Banco de Dados SQL
Conceda permissões ao 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 no provedor de identidade.
A página de registro do aplicativo é aberta. Esse registro foi gerado automaticamente quando você adicionou o provedor do Microsoft Entra.
Selecione permissões de API em Gerenciar no menu de navegação à esquerda.
Na página de permissões de API , selecione Adicionar uma permissão.
Na tela Solicitar permissões de API , selecione as APIs que minha organização usa a guia.
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, selecione a caixa de seleção ao lado de user_impersonation e, em seguida, 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. Configure 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 provedor do Microsoft Entra loginParametersdo aplicativo. O comando a seguir adiciona a loginParameters propriedade com escopos personalizados às configurações do provedor login de identidade do Microsoft Entra.
Dos escopos solicitados, o Serviço de Aplicativo já solicita openidprofilee email escopos por padrão. O offline_access escopo é 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 JWT (Token Web JSON) que especifica o Banco de Dados SQL como o destinatário do token. Esse comando usa jq o 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"
Dica
Para configurar o escopo necessário usando uma interface da Web em vez da CLI do Azure, use Configurar o provedor do 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.
Observação
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 reautentiquem com seu aplicativo, consulte Atualizar tokens de autenticação.
5. Use o token de acesso no código do 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.
Observação
Esse código não funciona localmente. Para obter mais informações e alternativas para depuração local, consulte Depurar localmente quando você usar a autenticação do Serviço de Aplicativo.
Em seu
DbContextobjeto no DatabaseContext.cs ou em outro arquivo que configura o contexto do banco de dados, altere o construtor padrão para adicionar o token de acesso da ID do Microsoft Entra 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 da conexão. Substitua<group-name>,<app-name>,<db-server-name>e<db-name>com 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 suas alterações
Se você usou o Visual Studio Code no navegador para fazer alterações de código em sua 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.
A confirmação dispara uma implantação de Ações do GitHub para Serviço de Aplicativo. Aguarde alguns minutos para a execução da implantação.
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 código estiver no Visual Studio:
Clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Publicar.
Na página Publicar , selecione Publicar.
Quando a nova página do 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
Nas etapas anteriores, você criou os recursos do Azure em um grupo de recursos. Quando você não precisar mais desses recursos, exclua o grupo de recursos executando o seguinte comando:
az group delete --name <group-name>
Esse comando pode levar algum tempo para ser executado.
Perguntas frequentes
- Por que recebo um erro "Falha de logon para o usuário '<entidade de segurança> identificada por token'"?
- Como fazer 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 Serviço de Aplicativo?
- O que acontece quando os tokens de acesso expiram?
Por que recebo um erro "Falha de logon para o usuário '<entidade de segurança> 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 solicitação
X-MS-TOKEN-AAD-ACCESS-TOKEN. Esse 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 fazer 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 independentes mapeados para identidades do Microsoft Entra.
O exemplo de 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 depurar localmente ao usar a autenticação do Serviço de Aplicativo?
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 do seu ambiente local com
Active Directory Interactiveautenticação. Esse fluxo de autenticação não entra no próprio usuário, mas se conecta ao banco de dados de 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 cabeçalho da solicitação
X-MS-TOKEN-AAD-ACCESS-TOKEN. - Se você implantar por meio do Visual Studio, use a depuração remota do aplicativo Serviço de Aplicativo.
O que acontece quando os tokens de acesso expiram?
O token de acesso expira após algum tempo. Para obter informações sobre como atualizar seus tokens de acesso sem exigir que os usuários autentiquem novamente no aplicativo, confira Atualizar tokens do provedor de identidade.
Conteúdo relacionado
- Tutorial: conectar-se aos bancos de dados do Azure do Serviço de Aplicativo sem segredos usando uma identidade gerenciada
- Tutorial: acessar o Microsoft Graph de um aplicativo ;NET protegido como o aplicativo
- Tutorial: Isolar a comunicação de back-end com a integração da Rede Virtual
- Mapear um nome DNS personalizado existente para o Serviço de Aplicativo do Azure