Esta é uma demonstração de como construir um aplicativo multi-inquilino usando o SDK Java do Modelo de Programação de Aplicações em Nuvem e o módulo mtx-sidecar.
Resumo:
Este aplicativo de exemplo contém
-
Módulo de interface do usuário que contém uma página de boas-vindas pública com um link para obter dados do seu próprio banco de dados de inquilinos.
-
Módulo back-end que contém o serviço CDS que expõe API CRUD de OData na entidade Livros.
-
Módulo de banco de dados (db) que contém schema.cds para criar a tabela de livros.
-
Módulo mtx-sidecar baseado em Node.js usado para lidar com a provisão de inquilinos.
O que é a Multi-inquilinidade?
SAP BTP fornece uma funcionalidade multi-inquilino que permite aos provedores de aplicativos serem proprietários, implementarem e operarem aplicativos conscientes de inquilinos para múltiplos consumidores, com custos reduzidos.
Com aplicativos conscientes de inquilinos, você pode:
-
Separar dados de forma segura para cada inquilino.
-
Economizar recursos ao compartilhá-los entre inquilinos.
-
Atualizar aplicativos de maneira eficiente em um único passo.
Configuração do Approuter, serviços necessários e módulo mtx-sidecar:
Para habilitar a multi-inquilinidade no SAP BTP, precisamos implementar um approuter consciente de inquilinos, o módulo mtx-sidecar e configurar os seguintes três serviços.
Somente quando esses serviços estiverem vinculados à sua aplicação, a função de multi-inquilinidade é ativada.
-
XSUAA
-
Gerenciador de Serviços
-
Serviço de Provisão SaaS (saas-registry)
Módulo Approuter:
Você implementa o aplicativo approuter como um aplicativo Cloud Foundry e como parte lógica do aplicativo multi-inquilino. Em seguida, configura o aplicativo approuter como um ponto de acesso externo do aplicativo.
Cada aplicativo multi-inquilino deve implementar seu próprio roteador de aplicativos e o roteador de aplicativos gerencia as solicitações de todos os inquilinos para o aplicativo.
O roteador de aplicativos deve determinar o subdomínio específico do inquilino. Essa determinação é feita usando uma expressão regular definida na variável de ambiente TENANT_HOST_PATTERN. Em seguida, o roteador de aplicativos encaminha a solicitação de autenticação para o serviço de Contas de Usuário e Autenticação (UAA) do inquilino e a zona de identidade relacionada.
Se você tiver várias rotas para o mesmo aplicativo, por exemplo:
tenant1.<domínio do aplicativo> e tenant2.<domínio do aplicativo>
O TENANT_HOST_PATTERN poderia ser:
TENANT_HOST_PATTERN: "^(.*)-<domínio do aplicativo>"
XS UAA:
Vincule seu aplicativo multi-inquilino e o aplicativo approuter à instância do serviço de Gerenciamento de Autorização e Confiança da SAP (nome técnico: xsuaa), que atua como um cliente OAuth 2.0 para seu aplicativo.
Em ambientes multi-inquilino, os inquilinos se inscrevem e consomem aplicativos, que estão registrados como clientes no XS UAA. XS UAA cria um novo cliente OAuth2 por aplicativo para cada inquilino. O modo de inquilino compartilhado é obrigatório para um roteador de aplicativos configurado para aplicativos multi-inquilino. Além disso, é necessária uma configuração especial de uma instância de serviço XS UAA para habilitar a autorização entre o serviço de Provisão SaaS, o aplicativo Java do Modelo de Programação de Aplicações em Nuvem e o mtx-sidecar.
O serviço pode ser configurado no mta.yaml adicionando um recurso xsuaa da seguinte forma:
- name: <nome da instância xsuaa>
type