Adicionar iniciar sessão com a conta Microsoft Entra a uma aplicação web do Spring

Este artigo mostra como desenvolver um aplicativo Web Spring que ofereça suporte à entrada por conta do Microsoft Entra. Depois de concluir todos os passos deste artigo, a aplicação web redireciona para a página de início de sessão do Microsoft Entra quando é acedida anonimamente. A captura de tela a seguir mostra a página de entrada do Microsoft Entra:

Captura de ecrã da página de início de sessão da Microsoft Entra para a aplicação web Spring.

Pré-requisitos

Para completar os passos deste artigo, precisa dos seguintes pré-requisitos:

  • Um Java Development Kit (JDK) suportado. Para obter mais informações sobre os JDKs disponíveis para uso ao desenvolver no Azure, consulte suporte Java no Azure e Azure Stack.
  • Apache Maven, versão 3.0 ou superior.
  • Uma assinatura do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita .

Importante

O Spring Boot versão 2.5 ou superior é necessário para concluir as etapas neste artigo.

Criar um aplicativo usando o Spring Initializr

  1. Navegue até https://start.spring.io/.

  2. Especifique que quer gerar um projeto Maven com Java. Introduza os nomes de Grupo e Artefacto da sua aplicação.

  3. Adicione dependências para o cliente Spring Web e OAuth2.

  4. Na parte inferior da página, selecione o botão GERAR.

  5. Quando solicitado, baixe o projeto para um caminho no computador local.

Adicionar a dependência Microsoft Entra

  1. Extraia os arquivos de projeto baixados para um diretório no computador local.

  2. Abra o arquivo pom.xml em um editor de texto.

  3. Adicione a Lista de Materiais (BOM) do Spring Cloud Azure à <dependencyManagement> secção.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>7.4.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
  4. Adicione a dependência Spring Cloud Azure Starter Microsoft Entra à <dependencies> secção.

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-active-directory</artifactId>
    </dependency>
    
  5. Salve e feche o arquivo pom.xml.

Criar a instância do Microsoft Entra

Se você for o administrador de uma instância existente, poderá ignorar esse processo.

  1. Faça login em https://portal.azure.com.

  2. Selecione Todos os serviços, Identitye, em seguida, Microsoft Entra ID.

  3. Introduza o nome da organização e o nome de domínio inicial . Copie o URL completo do seu diretório. Você usará a URL para adicionar contas de usuário posteriormente neste tutorial. (Por exemplo: azuresampledirectory.onmicrosoft.com.)

    Copie o URL completo do seu diretório. Você usará a URL para adicionar contas de usuário posteriormente neste tutorial. (Por exemplo: azuresampledirectory.onmicrosoft.com.).

    Quando terminar, selecione Criar. Levará alguns minutos para criar o novo recurso.

  4. Quando terminar, selecione o link exibido para acessar o novo diretório.

  5. Copie o ID do Locatário. Você usará o valor de ID para configurar o seu arquivo application.properties posteriormente neste tutorial.

Adicionar um registro de aplicativo para seu aplicativo Spring Boot

  1. No menu do portal, selecione Registos de aplicaçõese, em seguida, selecione Registar uma aplicação.

  2. Especifique a sua aplicação e, em seguida, selecione Registar.

  3. Quando a página de registro do aplicativo for exibida, copie a ID do aplicativo (cliente) e a ID do locatário. Use estes valores para configurar o seu ficheiro application.properties mais tarde neste tutorial.

  4. Selecione Certificados & Segredos no painel de navegação. Em seguida, selecione Novo segredo do cliente.

    Captura de ecrã da aplicação 'Certificados & segredos' com 'Novo segredo do cliente' destacado.

  5. Adicione uma Descrição e selecione a duração na lista Expira. Selecione Adicionar. O valor da chave é preenchido automaticamente.

  6. Copie e salve o valor do segredo do cliente para configurar seu arquivo de application.properties posteriormente neste tutorial. (Não pode recuperar este valor mais tarde.)

    Captura de tela do aplicativo com o novo segredo do cliente realçado.

  7. Na página principal do registo da sua aplicação, selecione Autenticaçãoe selecione Adicionar uma plataforma . Em seguida, selecione aplicativos Web.

  8. Para uma nova Redirecionar URI, digite http://localhost:8080/login/oauth2/code/e, em seguida, selecione Configurar.

  9. Se modificaste o ficheiropom.xml para usar uma versão inicial Microsoft Entra anterior à 3.0.0: em Concessão implícita e fluxos híbridos, seleciona ID tokens (usados para fluxos implícitos e híbridos) e depois seleciona Guardar.

Adicione uma conta de utilizador e atribua uma função na aplicação Microsoft Entra

  1. Na página Visão geral do locatário do Microsoft Entra ID, selecione Usuários e, em seguida, selecione Novo usuário.

  2. Quando o painel User está exibido, digite o Nome de Usuário e Nome. Em seguida, selecione Criar.

    Captura de ecrã do diálogo de novo utilizador para criar uma conta de utilizador.

    Observação

    Você precisa especificar a URL do diretório mencionada anteriormente neste tutorial ao introduzir o nome de utilizador. Por exemplo:

    test-user@azuresampledirectory.onmicrosoft.com

  3. Na página principal para o registo da sua aplicação, selecione funções na aplicação e depois selecione Criar função na aplicação. Fornece valores para os campos do formulário, seleciona Queres ativar esta função da aplicação? e depois seleciona Aplicar.

    Captura de ecrã do ecrã da aplicação 'Funções da aplicação' com o painel 'Criar função da aplicação' apresentado.

  4. Na página Visão Geral do do diretório do Microsoft Entra, selecione Aplicações empresariais.

  5. Selecione Todas as candidaturas e depois selecione a aplicação à qual adicionou o papel da aplicação numa etapa anterior.

  6. Selecione Usuários e grupos e, em seguida, selecione Adicionar usuário/grupo.

  7. Em Usuários, selecione Nenhum selecionado. Selecione o utilizador que criou anteriormente , selecione Selecionar e depois selecione Atribuir. Se você criou mais de uma função de aplicativo anteriormente, selecione uma função.

  8. Volte ao painel de Utilizadores , selecione o seu utilizador de teste e selecione Redefinir palavra-passe. Copia a palavra-passe. Usa a palavra-passe quando faz login na sua aplicação mais tarde neste tutorial.

Configurar e compilar seu aplicativo

  1. Extraia os arquivos do arquivo do projeto que você criou e baixou anteriormente neste tutorial em um diretório.

  2. Vai à pasta src/main/resources no teu projeto e depois abre o ficheiro application.properties num editor de texto.

  3. Especifique as definições para o registo da sua aplicação usando os valores que criou anteriormente. Por exemplo:

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Microsoft Entra ID tenant ID:
    spring.cloud.azure.active-directory.profile.tenant-id=<tenant-ID>
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=<client-ID>
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=<client-secret>
    

    Onde:

    Parâmetro Descrição
    spring.cloud.azure.active-directory.enabled Permite as funcionalidades fornecidas por spring-cloud-azure-starter-active-directory.
    spring.cloud.azure.active-directory.profile.tenant-id Contém a ID de locatário do Microsoft Entra ID anteriormente.
    spring.cloud.azure.active-directory.credential.client-id Contém o ID de Aplicação do registo da aplicação que completou anteriormente.
    spring.cloud.azure.active-directory.credential.client-secret Contém o valor da chave de registro do aplicativo que você concluiu anteriormente.
  4. Guarde e feche o ficheiro application.properties.

  5. Crie uma pasta chamada controlador na pasta de código-fonte Java para sua aplicação. Por exemplo: src/main/java/com/wingtiptoys/security/controller.

  6. Crie um novo arquivo Java chamado HelloController.java na pasta do controlador e abra-o em um editor de texto.

  7. Introduza o seguinte código e depois guarde e feche o ficheiro:

    package com.wingtiptoys.security;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.security.access.prepost.PreAuthorize;
    
    @RestController
    public class HelloController {
         @GetMapping("Admin")
         @ResponseBody
         @PreAuthorize("hasAuthority('APPROLE_Admin')")
         public String Admin() {
             return "Admin message";
         }
    }
    

Crie e teste seu aplicativo

  1. Abra um prompt de comando e altere o diretório para a pasta onde o arquivo pom.xml do seu aplicativo está localizado.

  2. Crie seu aplicativo Spring Boot com o Maven e execute-o. Por exemplo:

    mvn clean package
    mvn spring-boot:run
    
  3. Depois de o Maven construir e iniciar a sua aplicação, abra http://localhost:8080/Admin num navegador web. É solicitado um nome de utilizador e palavra-passe.

    Captura de ecrã da caixa de diálogo 'Iniciar sessão' da aplicação.

    Observação

    Pode ser solicitado a mudar a sua palavra-passe se esta for a primeira vez que inicia sessão numa nova conta de utilizador.

    Captura de ecrã da caixa de diálogo da aplicação 'Atualize a sua palavra-passe'.

  4. Depois de iniciar sessão com sucesso, vê o texto de exemplo "Mensagem de administrador" do controlador.

    Captura de tela da mensagem do administrador do aplicativo.

Resumo

Neste tutorial, criou uma nova aplicação web em Java usando o Microsoft Entra starter, configurou um novo inquilino Microsoft Entra, registou uma nova aplicação nesse tenant e depois configurou a sua aplicação para usar as anotações e classes Spring para proteger a aplicação web.

Ver também

Próximos passos

Para saber mais sobre o Spring e o Azure, continue para o centro de documentação do Spring on Azure.