Compartilhar via


Tutorial: autenticar cliente com o Spring Cloud Gateway nos Aplicativos Spring do Azure

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica a:✅ consumo Standard e dedicado (Versão Prévia)

Este início rápido mostra como proteger a comunicação entre um aplicativo cliente e um aplicativo de microsserviço hospedado nos Aplicativos Spring do Azure e protegido por um aplicativo Spring Cloud Gateway. O aplicativo cliente é verificado como uma entidade de segurança para iniciar o contato com o microsserviço implantado nos Aplicativos Spring do Azure, usando o aplicativo criado com o Spring Cloud Gateway. Esse método emprega os recursos Token Relay do Spring Cloud Gateway e Resource Server do Spring Security para os processos de autenticação e autorização, realizados por meio da execução do fluxo de credenciais do cliente OAuth 2.0.

A lista a seguir mostra a composição do projeto de exemplo:

  • SPA do Books: esse SPA (aplicativo de página única), hospedado localmente, interage com o microsserviço Books para adicionar ou pesquisar livros.
  • Microsserviço de livros:
    • Um aplicativo Spring Cloud Gateway hospedado nos Aplicativos Spring do Azure. Esse aplicativo funciona como um gateway para as APIs RESTful do Books.
    • Um aplicativo de API RESTful do Spring Boot hospedado nos Aplicativos Spring do Azure. Esse aplicativo armazena as informações do livro em um banco de dados H2. O serviço Books expõe dois pontos de extremidade REST para gravar e ler livros.

1. Pré-requisitos

2. Preparar o projeto Spring

Use as etapas a seguir para clonar e executar o aplicativo localmente:

  1. Use o seguinte comando para clonar o projeto de exemplo do GitHub:

    git clone https://github.com/Azure-Samples/azure-spring-apps-sso-client-credential.git -b consumption-plan
    
  2. Use o comando a seguir para criar os serviços de back-end do Books:

    cd azure-spring-apps-sso-client-credential
    ./mvnw clean package
    
  3. Entre no diretório do projeto SPA e use o seguinte comando para instalar as dependências:

    npm install @azure/msal-node
    

3. Preparar o ambiente de nuvem

Os principais recursos necessários para executar esse exemplo são uma instância dos Aplicativos Spring do Azure e uma instância do Banco de Dados do Azure para PostgreSQL. Essa seção fornece as etapas para criar esses recursos.

3.1. Entre no Portal do Azure

Abra seu navegador da Web e acesse o portal do Azure. Insira suas credenciais para entrar no portal do Azure. A exibição padrão é o painel de serviço.

3.2. Criar uma instância do Azure Spring Apps

Use as etapas a seguir para criar uma instância de serviço:

  1. Selecione Criar um recurso no canto do portal do Azure.

  2. Selecione Computação>Aplicativos Spring do Azure.

    Captura de tela do portal do Azure que mostra a página Criar um recurso com Aplicativos Spring do Azure realçado.

  3. Preencha o formulário Básico com as seguintes informações:

    Configuração Valor sugerido Descrição
    Subscription O nome da sua assinatura A assinatura do Azure que você deseja usar para o servidor. Caso você tenha várias assinaturas, escolha a assinatura na qual você deseja receber a cobrança do recurso.
    Resource group myresourcegroup Um novo nome do grupo de recursos ou um existente de sua assinatura.
    Nome myasa Um nome exclusivo que identifica o serviço Aplicativos Spring do Azure. O nome deve ter entre 4 e 32 caracteres e pode conter apenas letras minúsculas, números e hifens. O primeiro caractere do nome do serviço deve ser uma letra e o último caractere deve ser uma letra ou um número.
    Plano Consumo padrão e dedicado (versão prévia) O plano de preços determina os recursos e o custo associados à sua instância.
    Região A região mais próxima dos usuários A localização mais próxima dos usuários.
    Ambiente de Aplicativos de Contêiner myacaenv Selecione qual instância do ambiente de Aplicativos de Contêiner deve compartilhar a mesma rede virtual com outros serviços e recursos.

    Captura de tela do portal do Azure que mostra a página do plano de consumo Criar Aplicativos Spring do Azure.

    Use a tabela a seguir como um guia para criar o Ambiente de Aplicativos de Contêiner:

    Configuração Valor sugerido Descrição
    Nome do ambiente myacaenv Um nome exclusivo que identifica seu serviço do Ambiente de Aplicativos de Contêiner do Azure.
    Plano Consumo O plano de preços determina os recursos e o custo associados à sua instância.
    Com Redundância de Zona Desabilitado Se deve criar um serviço de Ambiente de Aplicativos de Contêiner no Azure em uma zona de disponibilidade.

    Captura de tela do portal do Azure que mostra a página Criar Aplicativos de Contêiner do Azure.

    Importante

    O perfil de carga de trabalho de Consumo tem um modelo de cobrança pré-paga, sem custo inicial. Você é cobrado pelo perfil de carga de trabalho dedicado com base nos recursos provisionados. Para obter mais informações, consulte Perfis de carga de trabalho em ambientes de estrutura de plano Dedicado + Consumo nos Aplicativos de Contêiner do Azure (versão prévia) e Preços dos Aplicativos Spring do Azure.

  4. Selecione Revisar e criar para revisar suas seleções. Selecione Criar para provisionar a instância do Aplicativos Spring do Azure.

  5. Na barra de ferramentas, selecione o ícone (sino) Notificações para monitorar o processo de implantação. Depois que a implantação estiver concluída, você poderá selecionar Fixar no painel, que cria um bloco para esse serviço no painel do portal do Azure como um atalho para a página Visão geral do serviço. Selecione Ir para o recurso para abrir a página Visão geral do serviço.

    Captura de tela do portal do Azure que mostra a página Visão Geral com o painel Notificações aberto.

  6. Use o seguinte comando para habilitar o servidor Eureka. Substitua os espaços reservados por seus próprios valores criados na etapa anterior.

    az spring eureka-server enable \
        --resource-group <resource-group-name> \
        --name <Azure-Spring-Apps-instance-name>
    

3.3. Registrar o aplicativo Books

Esta seção fornece as etapas para registrar um aplicativo para adicionar funções de aplicativo no Microsoft Entra ID, que é usado para proteger as APIs RESTful nos Aplicativos Spring do Azure.

  1. Acesse a página inicial do portal do Azure.

  2. Se você tiver acesso a vários locatários, use o filtro Diretório + assinatura () para selecionar o locatário no qual quer registrar um aplicativo.

  3. Pesquise e selecione Microsoft Entra ID.

  4. Em Gerenciar, selecione Registros de aplicativo>Novo registro.

  5. Insira um nome para seu aplicativo no campo Nome, por exemplo, Books. Os usuários do seu aplicativo podem ver esse nome e você pode alterá-lo mais tarde.

  6. Para Tipos de contas com suporte, selecione Contas somente neste diretório organizacional.

  7. Selecione Registrar para criar o aplicativo.

  8. Na página Visão Geral do aplicativo, localize o valor da ID do aplicativo (cliente) e registre-o para uso posterior. Você precisa dele para configurar o arquivo de configuração YAML para este projeto.

  9. Em Gerenciar, selecione Expor uma API, localize o URI de ID do aplicativo no início da página e selecione Adicionar.

  10. Na página Editar URI do ID do aplicativo, aceite o URI do ID do aplicativo proposto (api://{client ID}) ou use um nome significativo em vez do ID do cliente, como api://books, e selecione Salvar.

  11. Em Gerenciar, selecione Funções de aplicativo>Criar função de aplicativo e insira as seguintes informações:

    • Para Nome de exibição, insira Write.
    • Em Tipos de membros permitidos, selecione Aplicativos.
    • Em Valor, insira Books.Write.
    • Em Descrição, insira Adicionar livros.
  12. Repita a etapa anterior para adicionar outra função de aplicativo: Books.Read.

    Captura de tela da página de registro do aplicativo Books que mostra as funções do aplicativo.

3.4. Registrar o aplicativo SPA

O aplicativo de API RESTful do Books atua como um servidor de recursos, que é protegido pelo Microsoft Entra ID. Antes de adquirir um token de acesso, é necessário registrar outro aplicativo no Microsoft Entra ID e conceder permissões ao aplicativo cliente, que é chamado SPA.

  1. Volte para seu locatário no Microsoft Entra ID.

  2. Em Gerenciar, selecione Registros de aplicativo>Novo registro.

  3. Insira um nome para seu aplicativo no campo Nome, por exemplo, SPA.

  4. Para Tipos de conta com suporte, use apenas as contas padrão nesse diretório organizacional.

  5. Selecione Registrar para criar o aplicativo.

  6. Na página Visão Geral do aplicativo, localize o valor da ID do aplicativo (cliente) e registre-o para uso posterior. Isso será necessário para adquirir o token de acesso.

  7. Selecione Permissões de API>Adicionar uma permissão>APIs usadas por minha organização. Selecione o aplicativo Books registrado anteriormente, selecione as permissões Books.Read e Books.Write e, em seguida, selecione Adicionar permissões.

  8. Selecione Conceder consentimento do administrador< para >your-tenant-name para conceder o consentimento do administrador para as permissões adicionadas.

    Captura de tela da página de permissões de API do SPA que mostra as permissões de API de um aplicativo Web.

  9. Navegue até Certificados e segredos e depois selecione Novo segredo do cliente.

  10. Na página Adicionar um segredo do cliente, insira uma descrição para o segredo, selecione uma data de validade e, em seguida, selecione Adicionar.

  11. Procure o Valor do segredo e registre-o para uso posterior. Isso será necessário para adquirir um token de acesso.

3.5. Atualizar a configuração do aplicativo Books Service

Localize o arquivo books-service/src/main/resources/application.yml para o aplicativo books-service. Atualize a configuração na seção spring.cloud.azure.active-directory para corresponder ao exemplo a seguir. Substitua os espaços reservados pelos valores criados anteriormente.

spring:
  cloud:
    azure:
      active-directory:
        credential:
          client-id: <your-application-ID-of-Books>
        app-id-uri: <your-application-ID-URI-of-Books>

Use o comando a seguir para recompilar o projeto de exemplo:

./mvnw clean package

4. Implantar os aplicativos nos Aplicativos Spring do Azure

As etapas a seguir mostram como implantar os aplicativos no Azure.

4.1. Implantar os aplicativos de microsserviço nos Aplicativos Spring do Azure

Use as etapas a seguir para implantar os aplicativos nos Aplicativos Spring do Azure usando o Plugin Maven para os Aplicativos Spring do Azure:

  1. Navegue até o diretório do projeto de exemplo e, em seguida, use o seguinte comando para configurar o aplicativo nos Aplicativos Spring do Azure:

    ./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.18.0:config
    

    A lista a seguir descreve as interações de comando:

    • Selecione os módulos filho a serem configurados (números de entrada separados por vírgula, por exemplo: [1-2,4,6], ENTER para selecionar ALL): pressione Enter para selecionar tudo.
    • Logon do OAuth2: autorize o logon no Azure com base no protocolo OAuth2.
    • Selecionar assinatura: selecione o número da lista de assinaturas da instância dos Aplicativos Spring do Azure que você criou, que usa como padrão a primeira assinatura na lista. Se você usar o número padrão, pressione Enter diretamente.
    • Selecionar os Aplicativos Spring do Azure para implantação: selecione o número da lista da instância dos Aplicativos Spring do Azure que você criou. Se você usar o número padrão, pressione Enter diretamente.
    • Selecione os aplicativos para expor o acesso público: (insira números separados por vírgula, por exemplo: [1-2,4,6], ENTER para selecionar NONE): Insira 1 para gateway-service.
    • Confirmar para salvar todas as configurações acima (S/N): InsiraS. Se você inserir N, a configuração não será salva nos arquivos POM.
  2. Use o seguinte comando para implantar o aplicativo:

    ./mvnw azure-spring-apps:deploy
    

    A lista a seguir descreve a interação de comando:

    • Logon do OAuth2: autorize o logon no Azure com base no protocolo OAuth2.

    Depois que o comando for executado, você poderá ver as seguintes mensagens de registro, que indicam que a implantação foi bem-sucedida.

    [INFO] Getting public url of app(gateway-service)...
    [INFO] Application url: https://gateway-service.xxxxxxxxxxxxxx-xxxxxxxx.eastasia.azurecontainerapps.io
    
    ...
    
    [INFO] Artifact(books-service-0.0.1-SNAPSHOT.jar) is uploaded and deployment(default) is successfully updated.
    
    ...
    

    O URL do aplicativo de saída é o ponto de extremidade básico para acessar o aplicativo da API RESTful do ToDo.

4.2. Executar o aplicativo SPA localmente

Atualize a configuração no arquivo de script do aplicativo SPAspa/server.js para corresponder ao exemplo a seguir. Substitua os espaços reservados por seus próprios valores criados na etapa anterior.

const SpringCloudGatewayURL = "<URL exposed by app gateway-service>"

const msalConfig = {
    auth: {
        clientId: "< SPA App Registration ClientId>",
        authority: "https://login.microsoftonline.com/< TenantId >/",
        clientSecret: "<SPA App Registration ClientSecret>",
    },
};

const tokenRequest = {
    scopes: ["<Application ID URI of Books>/.default"]
};

No diretório do projeto SPA, use o seguinte comando para executar localmente:

node server.js

Observação

O aplicativo SPA é um aplicativo Web estático, que pode ser implantado em qualquer servidor Web.

5. Validar os aplicativos

Você pode acessar o aplicativo SPA do Books que se comunica com as APIs RESTful do Books por meio do aplicativo gateway-service.

  1. Acesse http://localhost:3000 no navegador para acessar o aplicativo.

  2. Insira os valores de Autor e Título e selecione Adicionar Livro. Você verá uma resposta semelhante ao exemplo a seguir:

    Book added successfully: {"id":1,"author":"Jeff Black","title":"Spring In Action"}
    

6. Limpar os recursos

Você pode excluir o grupo de recursos do Azure, que inclui todos os recursos no grupo de recursos. Use as seguintes etapas para excluir todo o grupo de recursos, incluindo o serviço recém-criado:

  1. Encontre o grupo de recursos no portal do Azure.

  2. Selecione Grupos de recursos e, em seguida, selecione o nome do grupo de recursos, por exemplo, myresourcegroup.

  3. Na página do grupo de recursos, selecione Excluir. Insira o nome do grupo de recursos na caixa de texto para confirmar a exclusão.

  4. Selecione Excluir.

7. Próximas etapas

Para obter mais informações, consulte os seguintes artigos: