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.

Leave A Comment