Adicionar entrada com a conta do Microsoft Entra a um aplicativo Web do Spring

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

Screenshot of application 'Sign in' dialog.

Pré-requisitos

Os seguintes pré-requisitos são obrigatórios para concluir as etapas deste artigo:

  • Um JDK (Java Development Kit) com suporte. Para obter mais informações sobre os JDKs disponíveis para uso durante o desenvolvimento no Azure, confira 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 deste artigo.

Criar um aplicativo usando o Spring Initialzr

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

  2. Especifique que você deseja gerar um projeto Maven com Java e insira os nomes de Grupo e Artefato para o seu aplicativo.

  3. Adicione dependências para o Spring Web, Microsoft Entra ID e cliente OAuth2.

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

    Screenshot of Spring Initializr with basic options.

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

Criar instância do Microsoft Entra

Criar a instância do Active Directory

Os administradores de instâncias existentes podem ignorar esse processo.

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

  2. Selecione Todos os serviços, Identidade e ID do Microsoft Entra.

  3. Insira o Nome da organização e seu Nome de domínio inicial. Copie a URL completa do seu 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 seu diretório. Você usará a URL para adicionar contas de usuário posteriormente neste tutorial. (Por exemplo, azuresampledirectory.onmicrosoft.com.).

    Ao terminar, selecione Criar. Levará poucos minutos para criar o recurso.

    Screenshot of the Configuration section of the Microsoft Entra ID 'Create a tenant' screen.

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

    Screenshot of 'Create a tenant' success message.

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

    Screenshot of Microsoft Entra tenant screen with 'Tenant ID' highlighted.

Adicionar um registro de aplicativo para seu aplicativo do 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 do registro de aplicativo for exibida, copie a ID do aplicativo (cliente) e a ID do diretório (locatário). Você usará esses valores para configurar seu arquivo application.properties posteriormente neste tutorial.

    Screenshot of application with 'Application (client) ID' and 'Directory (tenant) ID' highlighted.

  4. Selecione Certificados e segredos no painel de navegação esquerdo. Depois, selecione Novo segredo do cliente.

    Screenshot of application 'Certificates & secrets' screen with 'New client secret' highlighted.

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

  6. Copie e salve o valor do segredo do cliente para configurar seu arquivo application.properties posteriormente neste tutorial. (Você não conseguirá recuperar esse valor posteriormente.)

    Screenshot of application with new client secret highlighted.

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

    Screenshot of application Authentication screen with 'Configure platforms' section showing and Web platform highlighted.

  8. Insira http://localhost:8080/login/oauth2/code/ como um novo URI de Redirecionamento e escolha Configurar.

    Screenshot of application Authentication screen with 'Configure Web' section showing and 'Redirect URIs' highlighted.

  9. Se você modificou o arquivo pom.xml para usar uma versão inicial do 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.

    Screenshot of application Authentication screen with 'ID tokens' selected.

Adicionar uma conta de usuário ao diretório e, em seguida, a um AppRole

  1. Na página Visão geral do Active Directory, selecione Usuários e escolha Novo usuário.

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

    Screenshot of 'New user' dialog.

    Observação

    Você precisa especificar a URL do diretório mostrada anteriormente neste tutorial quando inserir o nome de usuário. Por exemplo:

    test-user@azuresampledirectory.onmicrosoft.com

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

    Screenshot of application 'App roles' screen with 'Create app role' pane showing.

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

    Screenshot of Microsoft Entra ID 'Enterprise applications' screen.

  5. Selecione Todos os aplicativos e, em seguida, escolha o aplicativo para o qual você adicionou a função de aplicativo em uma etapa anterior.

    Screenshot of 'Enterprise applications' screen with 'All applications' list showing.

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

  7. Em Usuários, selecione Nenhum Selecionado. Escolha o usuário que você criou anteriormente, clique em Selecionar e, em seguida, em Atribuir. Selecione uma função de aplicativo, mesmo se você tiver criado mais de uma anteriormente.

    Screenshot of application 'Add Assignment' screen with Users pane showing.

  8. Volte ao painel Usuários, selecione o usuário de teste, escolha Redefinir senha e copie a senha. Você usará a senha quando fizer logon no aplicativo posteriormente neste tutorial.

    Screenshot of user with 'Temporary password' field highlighted.

Configurar e compilar seu aplicativo

  1. Extraia os arquivos do arquivo de projeto criado e baixado antes neste tutorial para um diretório.

  2. Navegue até a pasta src/main/resources no seu projeto e abra o arquivo application.properties em um editor de texto.

  3. Especifique as configurações de registro do aplicativo usando os valores criados anteriormente. Por exemplo:

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Active Directory ID:
    spring.cloud.azure.active-directory.profile.tenant-id=22222222-2222-2222-2222-222222222222
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=11111111-1111-1111-1111-1111111111111111
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    Em que:

    Parâmetro Descrição
    spring.cloud.azure.active-directory.enabled Habilite os recursos fornecidos pelo spring-cloud-azure-starter-active-directory
    spring.cloud.azure.active-directory.profile.tenant-id Contém a ID de Diretório anterior do seu Active Directory.
    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 do Java para seu aplicativo. Por exemplo: src/main/java/com/wingtiptoys/security/controller.

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

  7. Insira o código a seguir, depois 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";
         }
    }
    

Crie e testar seu aplicativo

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

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

    mvn clean package
    mvn spring-boot:run
    

    Screenshot of Maven build output.

  3. Depois que o seu aplicativo for criado e iniciado pelo Maven, abra http://localhost:8080/Admin em um navegador da Web. Será solicitado que você forneça um nome de usuário e uma senha.

    Screenshot of application 'Sign in' dialog.

    Observação

    Você pode ser solicitado a alterar sua senha se for a primeira conexão para uma nova conta de usuário.

    Screenshot of application 'Update your password' dialog.

  4. Depois de entrar, você deve ver o texto de amostra da "mensagem do administrador" no controlador.

    Screenshot of application admin message.

Resumo

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

Confira também

Próximas etapas

Para saber mais sobre o Spring e o Azure, continue no Spring no Centro de Documentação do Azure.