Perguntas Frequentes

Nesta seção serão apresentadas respostas para as perguntas mais frequentes relacionadas ao uso da stack de desenvolvimento de softwares institucionais.

Para as dúvidas técnicas sobre a construção de módulos de negócio (como criar um módulo, configurar banco, i18n, rotas, permissões), consulte o guia do desenvolvedor na seção Modularização.

1. Gostei do boilerplate, mas preciso que a solução seja hospedada fora do ambiente de infraestrutura do GTI, é possível?

Sim é possível. Todos os recursos configurados no Boilerplate podem ser ajustados e/ou são acessados por serviços de rede (Ex.: Keycloak, Matomo, Sentry), desta forma podem ser “publicados” em infraestrutura diferente da do GTI.

A exceção é o MongoDB do ETL corporativo, que não é acessível fora da rede da Sede: soluções hospedadas fora dela devem consumir os dados corporativos pelas APIs corporativas, com o ajuste descrito no item 8.

2. Como faço para contribuir com o desenvolvimento do boilerplate?

Após obter acesso ao repositório do projeto do boilerplate no Embrapa I/O, crie uma branch para contemplar suas alterações e depois submeta-a através de um Merge Request. Antes de realizar alguma alteração entre em contato com a equipe da SDSS (Francisco José de Menezes Lima, Rodrigo Pinheiro dos Santos e/ou Joilton Almeida de Jesus) para verificar se já não existe alternativa ou implementação em curso para sua demanda.

Vale reforçar: correção ou melhoria em código genérico (o host, o projeto Core ou o Integracoes) deve ir por Merge Request ao boilerplate, e não como correção local no seu projeto — do contrário ela se perde na próxima sincronização com a base.

3. Existe previsão de construção de boilerplates em outras linguagens de programação além do .NET?

No momento a GTI pretende melhorar e intensificar o uso deste boilerplate não tendo previsão de construção de solução semelhante em outra linguagem de programação. Contudo, vale ressaltar que a plataforma do Embrapa I/O possui diversos outros boilerplates construídos em várias plataformas de programação com o foco no desenvolvimento de ativos digitais.

4. Posso utilizar o layout Spark Bootstrap em uma aplicação sem utilizar o boilerplate?

Sim pode. Basta baixar o layout aqui. ATENÇÃO: Este layout foi adquirido pela Embrapa para uso em soluções corporativas apenas e NÃO pode ser utilizado para quaisquer fins comerciais, o qual exige a compra de uma licença específica para cada solução em uso. Ressaltamos também que a licença adquirida cobre única e exclusivamente seu uso pela Embrapa e não pode ser repassada para uso por terceiros e/ou particular.

5. Como obtenho as credenciais de autenticação para a minha solução?

A autenticação das soluções Web construídas sobre o boilerplate é delegada ao Keycloak institucional, por meio do protocolo OpenID Connect. O Keycloak substituiu a integração direta com o Google OAuth utilizada até 2025 — o boilerplate mantém o mecanismo de revinculação das contas migradas, de modo que o usuário que já acessava a solução pelo login Google continua acessando normalmente.

Cada aplicação deverá possuir o seu próprio client OIDC, por ambiente, com credenciais próprias (Authority, Client Id e Client Secret). Estas credenciais são fornecidas somente através de uma solicitação ao GTI, via chamado na Central de TI, conforme descrito a seguir:

  • Tipo de Chamado: Solicitação de Serviço
  • Categoria: Sistemas
  • Subcategoria: Sistemas Corporativos Embrapa
  • Serviço: Conceder/revogar permissão de acesso a sistemas corporativos
  • Grupo de operadores: SEDE - 2 - SDSS - APIs e Webservices

Abrir um chamado para cada sistema/solução (consumidora) identificando:

  • O nome do sistema;
  • A unidade requisitante;
  • As URIs de redirecionamento após a autenticação, incluindo portas, identificadas por ambiente (Desenvolvimento, Homologação e Produção). No boilerplate, a URI de redirecionamento termina sempre em /signin-oidc — ex.: https://minhasolucao-d.nuvem.ti.embrapa.br/signin-oidc;
  • Se a solução necessitará de autocadastro de usuários externos (nesse caso são fornecidas também as credenciais de administração de realm, KEYCLOAK_ADMIN_CLIENT_ID / KEYCLOAK_ADMIN_CLIENT_SECRET).

Obs.: Não serão aceitas URIs de redirecionamento que sejam para domínios não Embrapa, exceto que seja alguma solução da Embrapa publicada em cloud pública.

6. É possível utilizar a autenticação institucional em uma solução fora do Boilerplate?

Sim. Como o Keycloak fala OpenID Connect, um protocolo padrão de mercado, existem bibliotecas de integração para praticamente todas as plataformas de desenvolvimento. Localize a biblioteca que melhor atenda à sua stack e solicite as credenciais do client conforme detalhado no item 5.

7. Existe previsão de integração da autenticação com outros provedores, por exemplo, Gov.br?

Com a adoção do Keycloak, essa passou a ser uma questão de configuração do realm, e não de código da aplicação. O Keycloak suporta a federação com múltiplos provedores de identidade (Gov.br, Microsoft Entra, LDAP, outros provedores OIDC/SAML), e a aplicação continua enxergando um único ponto de login. Demandas desse tipo devem ser encaminhadas à equipe da SDSS via chamado na Central de TI.

8. Onde foram parar as APIs corporativas de empregado e unidade?

Depende de onde a sua solução vai rodar. A configuração que vem pronta no boilerplate atende ao cenário dos sistemas corporativos desenvolvidos pelo GTI e hospedados na Sede; fora dele, é necessário um ajuste, descrito adiante.

Sistemas corporativos na Sede (configuração padrão do boilerplate)

O consumo de dados corporativos (empregados, unidades, pessoas físicas e jurídicas, localidades) passou a ser feito por conexão direta ao MongoDB do ETL corporativo, e não mais pelas APIs publicadas no API Gateway. Por isso, o registro do HttpClient autenticado no API Gateway foi removido do boilerplate. Solicite a string de conexão à equipe da SDSS.

Soluções fora da Sede

O MongoDB corporativo não é acessível fora da rede da Sede. Nesse caso, o consumo de dados corporativos deve ser feito 100% pelas APIs corporativas, e cabe ao desenvolvedor da solução ajustar a camada de integração para buscar os dados nas APIs em vez do MongoDB.

O ajuste é localizado, e de propósito. Em qualquer um dos dois cenários, o código de negócio nunca fala com a fonte de dados diretamente: ele depende apenas das interfaces de Core/Contracts/Institucional/ — IEmpregadosGateway, IUnidadesGateway, IPessoasGateway, ILocalidadesGateway, IFotoEmpregadoGateway. A implementação vive isolada no projeto Integracoes, que é o único ponto da solução que conhece o MongoDB.

Trocar a origem dos dados, portanto, significa reescrever apenas as implementações dentro de Integracoes para consumirem as APIs corporativas, mantendo as mesmas interfaces. Nenhuma página, service ou módulo precisa ser alterado — eles continuam recebendo os gateways por injeção de dependência, sem saber de onde o dado veio.

Para isso você vai precisar:

  1. Solicitar as credenciais de acesso às APIs corporativas junto à equipe responsável;
  2. Registrar o HttpClient autenticado no API Gateway — o passo a passo está na seção Boilerplates, incluindo os placeholders de configuração a declarar;
  3. Substituir as implementações dos gateways em Integracoes/ pelas versões que consomem as APIs, removendo a dependência do MongoDB.Driver e as variáveis MONGO_*.

Atenção: o caminho base das APIs corporativas muda conforme o ambiente (empregadoapi-d/, empregadoapi-h/, empregadoapi-p/), então esse valor deve ser configurável por estágio de publicação.

Se a sua solução precisar consumir outra API corporativa, além dessas, o procedimento é o mesmo do passo 2.

9. Sou obrigado a organizar minha solução em módulos?

Não. A modularização é um recurso disponível, não uma exigência: o boilerplate funciona normalmente com o domínio escrito diretamente no host, como antes. A lista de módulos registrada (ModuleRegistry.Modulos) nasce vazia.

Os módulos passam a valer a pena quando a solução tem domínios de negócio distintos que precisam evoluir com autonomia — cada um com seu schema, suas permissões, seu menu e suas telas — ou quando você quer garantir que o código de domínio não se misture à plataforma, para facilitar a sincronização com a base. Veja a seção Modularização.

10. Como mantenho a minha solução sincronizada com as atualizações do boilerplate?

A sincronização é feita por merge manual do upstream/main do boilerplate no repositório da sua solução. Para que esse merge seja previsível, a regra é manter as alterações do seu projeto restritas ao domínio da sua solução (os módulos e o seu assembly de contratos) e, sobre os arquivos da base, apenas aos pontos de edição previstos.

A lista taxativa desses pontos de edição está documentada na seção Modularização.


Gerência-Adjunta de Tecnologia da Informação - GTI

Supervisão de Desenvolvimento e Sustentação de Sistemas - SDSS

gti.sdss@embrapa.br

© 2026 embrapa4dev. Todos os direitos reservados.