Skip to Content

5 mins read


App N-Tier com Keycloak no Red Hat Openshift Container Platform 🇧🇷

Red Hat Openshift Single Sign-On Secured N-tier application deployment guide for 3-tier applications.


Red Hat Openshift Single Sign-On Secured N-tier application

Referência: https://github.com/mechevarria/ocp-sso.git

Este projeto contém scripts e códigos-fonte para implantar uma aplicação de 3 camadas utilizando o Red Hat Single Sign-On e protegendo-a com SSL.

A aplicação é distribuída em uma app frontend (tier 1) node.js + angular 6.x que realiza a chamada para uma app back-end REST (tier 2) springboot e uma app back-end REST (tier 2) JBoss EAP que irá persistir em uma instância de banco de dados (tier 3) postgresql.

A implantação do Red Hat Single Sign-On irá atuar na proteção deste cenário através de uma realm chamada java-js-realm. A realm irá conter clients configurados para o público que enxergam o frontend (js) e o back-end do tipo bearer only (eap). O objetivo deste cenário é simples e se trata apenas de garantir que um usuário válido está devidamente logado.

Todos os scripts que irão auxiliar o deployment das aplicações requerem que você já esteja devidamente autenticado utlizando o cli da instância do cluster openshift oc openshift

Exemplo: oc login -u developer

Deploy Red Hat Single Sign-On

Navegue para o diretório sso e execute o script ocp-deploy-sso.sh.

Uma vez finalizado a execução você irá visualizar os pods criados no projeto SSO N-tier.

Os dados para login do console administrativo do RH-SSO são admin/Redhat1!

OBS. Talvez seja necessário importar as imagens oficiais do Red Hat Single Sign-On caso não existam no registry do OCP. Para isso, execute o script ocp-install-templates.sh que se encontra no diretório de instalação sso.

Set the Public Key in the config map

Certifique-se que a instância do RH-SSO está ativa (running). Uma vez que a instância estiver UP você irá precisar modificar o config map utilizado pelo back-end do JBoss EAP para se comunicar com o Red Hat Single Sign-On.

  • Acesse o console administrativo do RH-SSO. As credenciais para acesso são admin/Redhat1!

  • No console administrativo do RH-SSO, navegue para a java-js-realm, na aba keys e selecione Public Key na chave RSA e guarde o valor gerado na popup em um bloco de notas para utilização futura.

  • Retorne para o console administrativo do Openshift. No projeto SSO N-Tier, navegue para Resources e depois em Config Maps

  • Edite o config-map ntier-config e copie o valor previamente copiado no bloco de notas para a entrada PUBLIC_KEY (previamente definido com o valor changeme)

Deploy JBoss EAP and Postgresql

Navegue para o diretório eap e execute o script ocp-deploy-eap.sh.

Este script irá criar a aplicação de back-end bearer-only que irá fazer uso do banco de dados PostgreSQL.

Deploy Spring Boot

Navegue para o diretório springboot e execute o script ocp-deploy-springboot.sh. Este script irá criar a aplicação de back-end confidential que servirá as requisições da aplicação de front-end baseada em NodeJS/Angular.

Deploy node.js

Agora que as camadas tier-2 e tier-3 estão disponíveis, navegue para o diretório node e execute o script ocp-deploy-node.sh.

Este script irá criar a aplicação front-end public baseada em NodeJS que irá realizar a interface final com o usuário e será responsável pelo processo de login/logout integrado ao RH-SSO.

Configure Clients

Agora que todas as aplicações estão em execução (running), é hora de configurar as aplicações no console administrativo do RH-SSO.

Efetue o acesso ao console administrativo do RH-SSO.

Lembre-se de utilizar as credenciais admin/Redhat1!

JS Client (front-end)

  • Acesse a realm java-js-realm, selecione o item de menu clients, e acione o botão create

  • Informe o valor js no campo Client ID, e clique em save

  • Informe em Valid Redirect URIs a rota que o Openshift criou para a aplicação NodeJS e informe também a URI /*. Exemplo: https://nodejs-app-ntier.192.168.42.90.nip.io/_ e /_

  • Informe o valor _ em Web Origins (Access-Control-Allow-Origin: _). Maiores detalhes sobre CORS poderão ser vistos em CORS

  • Selecione a opção save

Java Client (back-end bearer-only)

  • Acesse a realm java-js-realm, selecione o item de menu clients, e acione o botão create

  • Informe o valor java no campo Client ID, e clique em save

  • Informe a opção bearer-only para o campo Access Type

  • Selecione a opção save

Create User

  • Acesse a realm java-js-realm, selecione o item de menu Users, e acione o botão Add User

  • Preencha os campos Username, Email, First Name and Last Name

  • Selecione a opção save

  • Ainda na página do usuário recém-criado, navegue para a aba Credentials, e informe uma nova senha nos campos New Password e Password Confirmation

  • Defina a opção temporary para off

  • Selecione a opção Reset Password

  • Confirme a operação acionando o botão vermelho Change the password

Test!

Agora que toda a parte de configuração foi realizada, acesse a rota da aplicação node-js e se tudo estiver de acordo, você será redirecionado para a página de login provida pela integração da aplicação NodeJS/Angular com o RH-SSO.

Informe o usuário e senha previamente criados.

Ao acessar a aplicação, você será capaz de visualizar os atributos do usuário recém logado no item de menu Profile.

Utilizando os itens de menu Status e Cars você será capaz de realizar chamadas para a aplicação JBoss EAP back-end REST.