Como proteger uma aplicação Web de página única com início de sessão não interativo
Proteja uma aplicação Web de página única com o Microsoft Entra ID, mesmo quando o utilizador não consegue iniciar sessão no Microsoft Entra ID.
Para criar esse fluxo de autenticação não interativo, primeiro crie um serviço Web seguro do Azure Function que seja responsável por adquirir tokens de acesso da ID do Microsoft Entra. Este serviço Web está disponível exclusivamente para a sua aplicação Web de página única.
Para exibir os detalhes de autenticação da sua conta do Azure Maps no portal do Azure:
Inicie sessão no portal do Azure.
Navegue até o menu do portal do Azure. Selecione Todos os recursos e, em seguida, selecione a sua conta do Azure Maps.
Em Configurações no painel esquerdo, selecione Autenticação.
Três valores são criados quando a conta do Azure Maps é criada. Eles são usados para dar suporte a dois tipos de autenticação no Azure Maps:
- Autenticação do Microsoft Entra: O
Client ID
representa a conta que deve ser usada para solicitações de API REST. OClient ID
valor deve ser armazenado na configuração do aplicativo e, em seguida, deve ser recuperado antes de fazer solicitações HTTP do Azure Maps que usam a autenticação do Microsoft Entra. - Autenticação de Chave Compartilhada: Os
Primary Key
eSecondary Key
são usados como a chave de assinatura para autenticação de Chave Compartilhada. A autenticação de Chave Partilhada depende da passagem da chave gerada pela conta do Azure Maps com cada pedido para o Azure Maps. Recomendamos que regenere regularmente as suas chaves. Para manter as conexões atuais durante a regeneração, duas chaves são fornecidas. Uma chave pode estar em uso, enquanto regenera a outra. Quando volta a gerar as suas chaves, tem de atualizar todas as aplicações que acedam a esta conta no sentido de utilizar as novas chaves. Para obter mais informações, consulte Autenticação com o Azure Maps
Gorjeta
O Azure Maps pode dar suporte a tokens de acesso de fluxos interativos ou de logon do usuário. Você pode usar fluxos interativos para um escopo mais restrito de revogação de acesso e gerenciamento de segredos.
Criar uma função do Azure
Para criar um aplicativo de serviço Web seguro responsável pela autenticação no Microsoft Entra ID:
Crie uma função no portal do Azure. Para obter mais informações, consulte Introdução ao Azure Functions.
Configure a política CORS na função do Azure para ser acessível pelo aplicativo Web de página única. A política CORS protege os clientes do navegador às origens permitidas do seu aplicativo Web. Para obter mais informações, veja Adicionar a funcionalidade CORS.
Adicione uma identidade atribuída ao sistema na função do Azure para permitir a criação de uma entidade de serviço para autenticação na ID do Microsoft Entra.
Conceda acesso baseado em função para a identidade atribuída ao sistema à conta do Azure Maps. Para obter mais informações, consulte Conceder acesso baseado em função.
Escreva código para a função do Azure para obter tokens de acesso do Azure Maps usando a identidade atribuída pelo sistema com um dos mecanismos suportados ou o protocolo REST. Para obter mais informações, consulte Obter tokens para recursos do Azure.
Aqui está um exemplo de protocolo REST:
GET /MSI/token?resource=https://atlas.microsoft.com/&api-version=2019-08-01 HTTP/1.1 Host: localhost:4141
E aqui está um exemplo de resposta:
HTTP/1.1 200 OK Content-Type: application/json { "access_token": "eyJ0eXAi…", "expires_on": "1586984735", "resource": "https://atlas.microsoft.com/", "token_type": "Bearer", "client_id": "..." }
Configure a segurança para a função do Azure HttpTrigger:
- Criar uma tecla de acesso de função
- Ponto de extremidade HTTP seguro para a função do Azure em produção.
Configure um aplicativo Web SDK da Web do Azure Maps.
//URL to custom endpoint to fetch Access token var url = 'https://{App-Name}.azurewebsites.net/api/{Function-Name}?code={API-Key}'; var map = new atlas.Map('myMap', { center: [-122.33, 47.6], zoom: 12, language: 'en-US', view: "Auto", authOptions: { authType: "anonymous", clientId: "<insert>", // azure map account client id getToken: function(resolve, reject, map) { fetch(url).then(function(response) { return response.text(); }).then(function(token) { resolve(token); }); } } }); // use the following events to debug, you can remove them at any time. map.events.add("tokenacquired", function () { console.log("token acquired"); }); map.events.add("error", function (err) { console.log(JSON.stringify(err.error)); });
Conceder acesso baseado em função para usuários ao Azure Maps
Você pode conceder o controle de acesso baseado em função do Azure (Azure RBAC) atribuindo um grupo ou entidade de segurança do Microsoft Entra a uma ou mais definições de função do Azure Maps.
Para exibir as definições de função do Azure disponíveis para o Azure Maps, consulte Exibir definições de função internas do Azure Maps.
Para obter etapas detalhadas sobre como atribuir uma função disponível do Azure Maps à identidade gerenciada criada ou à entidade de serviço, consulte Atribuir funções do Azure usando o portal do Azure
Para gerenciar com eficiência o aplicativo Azure Maps e o acesso a recursos de uma grande quantidade de usuários, consulte Grupos do Microsoft Entra.
Importante
Para que os usuários tenham permissão para se autenticar em um aplicativo, os usuários devem primeiro ser criados no Microsoft Entra ID. Para mais informações, consulte Adicionar ou eliminar utilizadores com o Microsoft Entra ID.
Para saber mais sobre como gerenciar efetivamente um diretório grande para usuários, consulte ID do Microsoft Entra.
Aviso
As definições de função internas do Azure Maps fornecem um acesso de autorização muito grande a muitas APIs REST do Azure Maps. Para restringir o acesso às APIs ao mínimo, consulte Criar uma definição de função personalizada e atribuir a identidade atribuída pelo sistema à definição de função personalizada. Isso permite o menor privilégio necessário para o aplicativo acessar o Azure Maps.
Próximos passos
Maior compreensão de um cenário de aplicativo de página única:
Encontre as métricas de uso da API para sua conta do Azure Maps:
Explore outros exemplos que mostram como integrar o Microsoft Entra ID com o Azure Maps: