Adicionar login com a conta do Microsoft Entra a um aplicativo Spring para web

Este artigo mostra como desenvolver um aplicativo Web Spring que ofereça suporte à entrada pela conta Microsoft Entra. Depois de concluir todas as etapas neste artigo, o aplicativo Web redireciona para a página de entrada do Microsoft Entra quando é acessado anonimamente. A captura de tela a seguir mostra a página de entrada do Microsoft Entra:

Captura de tela da página de entrada Microsoft Entra do aplicativo Web Spring.

Pré-requisitos

Para concluir as etapas neste artigo, você precisa dos seguintes pré-requisitos:

  • Um JDK (Java Development Kit) com suporte. Para obter mais informações sobre os JDKs disponíveis para uso ao desenvolver no Azure, consulte suporte a Java no Azure e no 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 você deseja gerar um projeto maven com Java. Insira os nomes de Grupo e Artefato para seu aplicativo.

  3. Adicionar dependências para o Spring Web e o cliente 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 do Microsoft Entra

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

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

  3. Adicione o Spring Cloud Azure Bill of Materials (BOM) à <dependencyManagement> seçã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 de Microsoft Entra do Spring Cloud Azure Starter à <dependencies> seção.

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-active-directory</artifactId>
    </dependency>
    
  5. Salve e feche o arquivo de 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 logon em https://portal.azure.com.

  2. Selecione Todos os serviços, depois Identidade e então ID do Microsoft Entra.

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

    Copie a URL completa do 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 concluir, selecione o link exibido para acessar o novo diretório.

  5. Copie a ID do locatário . Você usará o valor da ID para configurar o arquivo application.properties posteriormente neste tutorial.

Adicionar um registro de aplicativo para seu aplicativo Spring Boot

  1. No menu do portal, selecione Registros de aplicativo e escolha Registrar um aplicativo.

  2. Especifique seu aplicativo e selecione Registrar.

  3. Quando a página de registro do aplicativo for exibida, copie a ID do aplicativo (cliente) e a ID do inquilino. Use esses valores para configurar o arquivo application.properties mais adiante neste tutorial.

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

    Captura da tela

  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 application.properties mais adiante neste tutorial. (Você não pode recuperar esse valor mais tarde.)

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

  7. Na página principal do registro do aplicativo, selecione de Autenticação e selecione Adicionar uma plataforma. Depois, selecione Aplicativos Web.

  8. Para um novo URI de Redirecionamento, insira http://localhost:8080/login/oauth2/code/ e selecione Configurar.

  9. Se você modificou o arquivo pom.xml para usar uma versão inicial Microsoft Entra anterior à 3.0.0: em concessão implícita e fluxos híbridos, selecione tokens de ID (usados para fluxos implícitos e híbridos) e selecione Salvar.

Adicionar uma conta de usuário e atribuir uma função de aplicativo Microsoft Entra

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

  2. Quando o painel Usuário for exibido, insira o Nome de usuário e o Nome. Em seguida, selecione Criar.

    Captura de tela da caixa de diálogo Novo usuário para criar uma conta de usuário.

    Nota

    Você precisa especificar a URL do diretório que foi mencionada anteriormente neste tutorial ao inserir o nome de usuário. Por exemplo:

    test-user@azuresampledirectory.onmicrosoft.com

  3. Na página principal do registro do aplicativo, selecione funções de aplicativo e, em seguida, selecione Criar função de aplicativo. Forneça valores para os campos de formulário, selecione Deseja habilitar essa função de aplicativo?e selecione Aplicar.

    Captura de tela da tela 'Funções de aplicativo' do aplicativo com o painel 'Criar função de aplicativo' em exibição.

  4. Na página Visão geral do diretório do Microsoft Entra, selecione Aplicativos empresariais.

  5. Selecione Todos os aplicativos e selecione o aplicativo ao qual você adicionou a função de aplicativo em uma 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 usuário criado anteriormente, selecione Selecionar e, em seguida, selecione Atribuir. Se você criou mais de uma função de aplicativo anteriormente, selecione uma função.

  8. Volte para o painel Usuários , selecione o usuário de teste e selecione Redefinir senha. Copie a senha. Você usará a senha ao fazer logon em seu aplicativo mais adiante neste tutorial.

Configurar e compilar seu aplicativo

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

  2. Vá para a pasta src/main/resources em seu projeto e abra o arquivo application.properties em um editor de texto.

  3. Especifique as configurações para o registro do aplicativo usando os valores criados 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 Habilita os recursos fornecidos por spring-cloud-azure-starter-active-directory.
    spring.cloud.azure.active-directory.profile.tenant-id Contém a ID de Locatário do locatário do Microsoft Entra ID de antes.
    spring.cloud.azure.active-directory.credential.client-id Contém a ID de Aplicativo do registro de aplicativo que você preencheu anteriormente.
    spring.cloud.azure.active-directory.credential.client-secret Contém o Valor da chave do registro de aplicativo que você preencheu anteriormente.
  4. Salve e feche o arquivo application.properties.

  5. Crie uma pasta chamada controlador na pasta de origem Java para seu aplicativo. 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. Insira o seguinte código e salve e feche o arquivo:

    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";
         }
    }
    

Compilar e testar seu aplicativo

  1. Abra um prompt de comando e altere o diretório para a pasta em que o arquivo pom.xml do 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 que o Maven compilar e iniciar seu aplicativo, abra http://localhost:8080/Admin em um navegador da Web. Você será solicitado a fornecer um nome de usuário e uma senha.

    Captura de tela da caixa de diálogo 'Entrar' do aplicativo.

    Nota

    Você poderá ser solicitado a alterar sua senha se essa for a primeira entrada para uma nova conta de usuário.

    Captura de tela da caixa de diálogo

  4. Depois de entrar com êxito, você verá o exemplo de texto "Mensagem de administrador" do controlador.

    Captura de tela da mensagem de administrador do aplicativo.

Resumo

Neste tutorial, você criou um novo aplicativo Web Java usando o Microsoft Entra starter, configurou um novo locatário Microsoft Entra, registrou um novo aplicativo no locatário e configurou seu aplicativo para usar as anotações e classes spring para proteger o aplicativo Web.

Consulte também

Próximas etapas

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