Partilhar via


Tutorial: Autenticar cliente com o Spring Cloud Gateway no Azure Spring Apps

Nota

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

O plano de consumo padrão e dedicado 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 obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.

Este artigo aplica-se a:✅ Consumo padrão e dedicado (Pré-visualização)

Este guia de início rápido mostra como proteger a comunicação entre um aplicativo cliente e um aplicativo de microsserviço hospedado no Azure Spring Apps e protegido com um aplicativo Spring Cloud Gateway. O aplicativo cliente é verificado como uma entidade de segurança para iniciar contato com o microsserviço implantado no Azure Spring Apps, usando o aplicativo criado com o Spring Cloud Gateway. Este 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 através 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 de livros: Este aplicativo de página única (SPA), hospedado localmente, interage com o microsserviço de livros para adicionar ou pesquisar livros.
  • Microsserviço de livros:
    • Um aplicativo Spring Cloud Gateway hospedado no Azure Spring Apps. Este aplicativo opera como um gateway para as APIs RESTful do Books.
    • Um aplicativo de API RESTful do Spring Boot hospedado no Azure Spring Apps. Este aplicativo armazena as informações do livro em um banco de dados H2. O serviço Livros expõe dois pontos de extremidade REST para escrever e ler livros.

1. Pré-requisitos

2. Preparar o projeto da primavera

Use as seguintes etapas 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 seguinte comando para criar os serviços de back-end do Books:

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

    npm install @azure/msal-node
    

3. Prepare o ambiente de nuvem

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

3.1. Inicie sessão no portal do Azure

Abra seu navegador da Web e vá para o portal do Azure. Introduza as suas credenciais para iniciar sessão no portal do Azure. A vista predefinida é o dashboard de serviço.

3.2. Criar uma instância do Azure Spring Apps

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

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

  2. Selecione Compute>Azure Spring Apps.

    Captura de ecrã do portal do Azure que mostra a página Criar um recurso com as Aplicações Azure Spring realçadas.

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

    Definição Valor sugerido Description
    Subscrição o nome da subscrição A subscrição do Azure que quer utilizar para o servidor. Se tiver várias subscrições, escolha a subscrição na qual pretende ser cobrado pelo recurso.
    Grupo de recursos myresourcegroup Um nome de grupo de recursos novo ou um já existente na sua subscrição.
    Nome Miasa Um nome exclusivo que identifica seu serviço Azure Spring Apps. O nome deve ter entre 4 e 32 caracteres e pode conter apenas letras minúsculas, números e hífenes. O primeiro caractere do nome do serviço deve ser uma letra e o último caractere deve ser uma letra ou um número.
    Planear Consumo padrão e dedicado (pré-visualização) O plano de preços determina os recursos e o custo associados à sua instância.
    País/Região A região mais próxima dos seus utilizadores A localização que esteja mais próxima dos seus utilizadores.
    Ambiente de aplicativos de contêiner Myacaenv Selecione qual instância do ambiente Container Apps compartilhar a mesma rede virtual com outros serviços e recursos.

    Captura de ecrã do portal do Azure que mostra a página Criar plano de consumo do Azure Spring Apps.

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

    Definição Valor sugerido Description
    Nome do ambiente Myacaenv Um nome exclusivo que identifica seu serviço de Ambiente de Aplicativos de Contêiner do Azure.
    Planear Consumo O plano de preços determina os recursos e o custo associados à sua instância.
    Redundância de Zona Desativado Se deseja criar seu serviço de Ambiente de Aplicativos de Contêiner em uma zona de disponibilidade do Azure.

    Captura de ecrã do portal do Azure que mostra a página Criar Aplicações de Contentor do Azure.

    Importante

    O perfil de carga de trabalho de Consumo tem um modelo de faturamento pré-pago, sem custo inicial. Você é cobrado pelo perfil de carga de trabalho dedicada com base nos recursos provisionados. Para obter mais informações, consulte Perfis de carga de trabalho em Consumo + Ambientes de estrutura de plano dedicado em Aplicativos de Contêiner do Azure (visualização) e Preços do Azure Spring Apps.

  4. Selecione Rever e Criar para rever as suas seleções. Selecione Criar para provisionar a instância do Azure Spring Apps.

  5. Na barra de ferramentas, selecione o ícone Notificações (um sino) para monitorizar o processo de implementação. Depois que a implantação for 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 recurso para abrir a página Visão geral do serviço.

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

  6. Use o seguinte comando para ativar o servidor Eureka. Certifique-se de substituir 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. Registar a aplicação Livros

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 no Azure Spring Apps.

  1. Vá para 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 deseja registrar um aplicativo.

  3. Procure e selecione Microsoft Entra ID.

  4. Em Gerir, selecione Registos de>aplicações Novo registo.

  5. Introduza um nome para a sua aplicação no campo Nome, por exemplo Livros. Os usuários do seu aplicativo podem ver esse nome e você pode alterá-lo mais tarde.

  6. Em Tipos de conta suportados, selecione Contas somente neste diretório organizacional.

  7. Selecione Registar para criar a aplicação.

  8. Na página Visão geral do aplicativo, procure 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 da ID do Aplicativo no início da página e selecione Adicionar.

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

  11. Em Gerir, selecione Funções>de aplicação Criar função de aplicação e, em seguida, introduza as seguintes informações:

    • Em Nome para exibição, digite Gravar.
    • 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 ecrã da página de registo da aplicação Livros que mostra as funções da aplicação.

3.4. Registar a aplicação SPA

O aplicativo Books RESTful API 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, chamado SPA.

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

  2. Em Gerir, selecione Registos de>aplicações Novo registo.

  3. Introduza um nome para a sua aplicação no campo Nome , por exemplo SPA.

  4. Para Tipos de conta suportados, use as Contas padrão somente neste diretório organizacional.

  5. Selecione Registar para criar a aplicação.

  6. Na página Visão geral do aplicativo, procure o valor da ID do aplicativo (cliente) e registre-o para uso posterior. Você precisa dele para adquirir o token de acesso.

  7. Selecione Permissões>de API Adicione uma permissão>APIs que minha organização usa. Selecione o Books aplicativo que você registrou anteriormente, selecione as permissões Books.Read e Books.Write e, em seguida, selecione Adicionar permissões.

  8. Selecione Conceder consentimento de administrador para <seu nome> de locatário para conceder consentimento de administrador para as permissões adicionadas.

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

  9. Navegue até Certificados & segredos e 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 selecione Adicionar.

  11. Procure o valor do segredo e, em seguida, grave-o para uso posterior. Você precisa dele para adquirir um token de acesso.

3.5. Atualizar a configuração do aplicativo Serviço de Manuais

Localize o arquivo books-service/src/main/resources/application.yml para o books-service aplicativo. Atualize a spring.cloud.azure.active-directory configuração na seção para corresponder ao exemplo a seguir. Certifique-se de substituir 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 seguinte comando para reconstruir o projeto de exemplo:

./mvnw clean package

4. Implantar os aplicativos no Azure Spring Apps

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

4.1. Implantar os aplicativos de microsserviço no Azure Spring Apps

Use as seguintes etapas para implantar os aplicativos no Azure Spring Apps usando o plug-in Maven para Azure Spring Apps:

  1. Navegue até o diretório de projeto de exemplo e use o seguinte comando para configurar o aplicativo no Azure Spring Apps:

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

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

    • Selecione módulos filho para configurar (números de entrada separados por vírgula, por exemplo: [1-2,4,6], ENTER para selecionar ALL): Pressione Enter para selecionar todos.
    • Login OAuth2: autorize o logon no Azure com base no protocolo OAuth2.
    • Selecionar assinatura: selecione o número da lista de assinaturas da instância do Azure Spring Apps que você criou, que assume como padrão a primeira assinatura na lista. Se você usar o número padrão, pressione Enter diretamente.
    • Selecione Azure Spring Apps para implantação: selecione o número da lista da instância do Azure Spring Apps que você criou. Se você usar o número padrão, pressione Enter diretamente.
    • Selecione aplicativos para expor o acesso público: (números de entrada separados por vírgula, por exemplo: [1-2,4,6], ENTER para selecionar NENHUM): Digite 1 para gateway-service.
    • Confirme para salvar todas as configurações acima (S/n): Digite y. 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:

    • Login OAuth2: você precisa autorizar o logon no Azure com base no protocolo OAuth2.

    Depois que o comando for executado, você poderá ver as seguintes mensagens de log, 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.
    
    ...
    

    A URL do aplicativo de saída é o ponto de extremidade base para acessar o aplicativo ToDo RESTful API.

4.2. Execute o aplicativo SPA localmente

Atualize a configuração no SPA arquivo de script de aplicativo spa/server.js para corresponder ao exemplo a seguir. Certifique-se de substituir 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

Nota

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

5. Valide o aplicativo

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

  1. Aceda ao http://localhost:3000 seu browser para aceder à aplicação.

  2. Introduza valores para Autor e Título e, em seguida, 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

Pode eliminar 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. Localize o grupo de recursos no portal do Azure.

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

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

  4. Selecione Eliminar.

7. Próximas etapas

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