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

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.

Loading

Leave A Comment