Adicionar início de sessão com a conta Microsoft Entra a uma aplicação Web Spring

Este artigo mostra-lhe como desenvolver uma aplicação Web Spring que suporte o início de sessão pela conta Microsoft Entra. Depois de concluir todas as etapas neste 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 necessários para concluir as etapas neste artigo:

Importante

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

Criar uma aplicação com o Spring Initializr

  1. Navegue para https://start.spring.io/.

  2. Especifique que pretende gerar um projeto Maven com Java, introduza os nomes de Group (Grupo) e Artifact (Artefacto) para a sua aplicação.

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

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

    Screenshot of Spring Initializr with basic options.

  5. Quando lhe for pedido, transfira o projeto para um caminho no seu computador local.

Criar instância do Microsoft Entra

Criar uma instância do Active Directory

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

  1. Inicie sessão em https://portal.azure.com.

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

  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. A criação do novo recurso poderá demorar alguns minutos.

    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 o ID do locatário. Você usará o valor ID para configurar seu arquivo application.properties mais adiante neste tutorial.

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

Adicionar um registo de aplicação para a sua aplicação do Spring Boot

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

  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 diretório (locatário). Você usará esses valores para configurar seu arquivo application.properties mais adiante neste tutorial.

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

  4. Selecione Certificados & segredos no painel de navegação esquerdo. Em seguida, 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 em. Selecione Adicionar. O valor da chave será preenchido automaticamente.

  6. Copie e guarde o valor do segredo do cliente para configurar o ficheiro application.properties mais adiante neste tutorial. (Você não poderá recuperar esse valor mais tarde.)

    Screenshot of application with new client secret highlighted.

  7. Na página principal do registro do seu aplicativo, selecione Autenticação e selecione Adicionar uma plataforma. Em seguida, 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 selecione 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.

Adicione uma conta de usuário ao seu diretório e adicione essa conta a um appRole

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

  2. Quando for apresentado o painel Utilizador, introduza o Nome de utilizador e o Nome. Depois, selecione Criar.

    Screenshot of 'New user' dialog.

    Nota

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

    test-user@azuresampledirectory.onmicrosoft.com

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

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

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

    Screenshot of Microsoft Entra ID 'Enterprise applications' screen.

  5. Selecione Todos os aplicativos e, em seguida, selecione o aplicativo ao 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, 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.

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

  8. Volte para o painel Usuários , selecione seu usuário de teste, selecione Redefinir senha e copie a senha. Você usará a senha quando fizer login em seu aplicativo mais adiante neste tutorial.

    Screenshot of user with 'Temporary password' field highlighted.

Configurar e compilar a sua aplicação

  1. Extraia os ficheiros do arquivo de projeto que criou e transferiu anteriormente neste tutorial para um diretório.

  2. Navegue até 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 seu 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 Description
    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 o ID de Diretório do Active Directory criado anteriormente.
    spring.cloud.azure.active-directory.credential.client-id Contém o ID da Aplicação do registo de aplicação concluído anteriormente.
    spring.cloud.azure.active-directory.credential.client-secret Contém o Valor da chave de registo de aplicação concluído anteriormente.
  4. Guarde e feche o ficheiro application.properties.

  5. Crie uma pasta com o nome controller na pasta de origem Java da sua aplicação. Por exemplo: src/main/java/com/wingtiptoys/security/controller.

  6. Crie um novo ficheiro Java com o nome HelloController.java na pasta controller e abra-o num editor de texto.

  7. Introduza o seguinte código e, em seguida, 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";
         }
    }
    

Criar e testar a sua aplicação

  1. Abra uma linha de comandos e altere o diretório para a pasta onde se encontra o ficheiro pom.xml.

  2. Crie a aplicação Spring Boot com o Maven e execute-a. Por exemplo:

    mvn clean package
    mvn spring-boot:run
    

    Screenshot of Maven build output.

  3. Depois que seu aplicativo for criado e iniciado pelo Maven, abra http://localhost:8080/Admin em um navegador da Web. Deverá ser-lhe pedido um nome de utilizador e uma palavra-passe.

    Screenshot of application 'Sign in' dialog.

    Nota

    Se estiver a iniciar sessão numa conta de utilizador nova pela primeira vez, poderá ser-lhe pedido que altere a palavra-passe.

    Screenshot of application 'Update your password' dialog.

  4. Depois de iniciar sessão com êxito, deverá ver o texto de exemplo "Mensagem de administrador" do 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.

Consulte também

Próximos passos

Para saber mais sobre o Spring e o Azure, avance para o centro de documentação relativa ao Spring no Azure.