Skip to content

Fundacio-Bit/serproes-demo

Repository files navigation

Projecte SERPROES-DEMO 1.0

Aquesta aplicació mostra com un backoffice desenvolupat en ReactJS s'autentica en Keycloak i fa cridades a una REST API java.

Requeriments

  • Java OpenJDK 11
  • JBoss EAP 7.2
  • Interfície d'usuari: ReactJS
  • Base de dades: PostgreSQL 10
  • Mecanisme d'autenticació: RedHat Single Sign-On (Keycloak)
  • Compilació i empaquetat: Maven 3.6

Autenticació en Keycloak desde l'interfície d'usuari ReactJS1

Hem configurat un client de Keycloak per retornar JSON WEB TOKEN (JWT) en iniciar la sessió.

L'usuari s'autentica mitjançant el seu usuari i contrasenya del GOIB. S'accedeix mitjançant una llibreria Javascript client-side. Una cosa important que cal destacar sobre l'ús d'aplicacions client-side és que ha de ser un client keycloak públic, ja que no hi ha una manera segura d'emmagatzemar les credencials al codi de l'aplicació. Això fa molt important assegurar-se que les URIs de redirecció que es configuren al client keycloak siguin correctes i el més específiques possible.

Dins l'administrador keycloak, es troba el Keycloak JSON OIDC que s'ha d'incloure en el codi de l'aplicació client (ReactJS). Aquest codi inclós en un fitxer "keycloak.json", és l'única cosa que es necessita per a fer l'autenticació client-side.

En iniciar sessió, keycloak retorna el JWT. Aquest token s'emmagatzema en el sessionStorage i l'aplicació pot fer sol·licituds segures als services REST mitjançant la inclusió del token a la capçalera d'autorització.

Verificació del JWT des de la API REST2

La API Rest rep com a capçalera el paràmetre Authorization amb el JWT.

La llibreria java-jwt3 implementa la verificació del token usant l'algorisme RSA256(RSA Signature amb SHA-256). El consumidor de JWT recupera una clau pública dels extrems de metadades proporcionats per Auth0 i l'utilitza per validar la signatura JWT. Una vegada verificat es retorna la resposta.

Ús del repositori

Abans d'obtenir el fitxer ear, s'ha de configurar un client keycloak (veure Guia de configuració apartat "7.2 Keycloak 6.0.1 / Configuració") i, una vegada configurat, dins l'administrador keycloak, des de l'apartat Clients, a la pestanya Instal·lació/Format/Download, es troba el Keycloak JSON OIDC que s'ha d'incloure en el codi de l'aplicació i obtenir el fitxer ear.

A continuació:

  • Desplegar al JBoss el fitxer ear generat.

  • Executar scripts de creació de la base de dades que estan en la carpeta scripts del repositori:

     psql -U postgres -f <project-home>/scripts/bbdd/01_create_schema.sql
    
     psql -U postgres -f <project-home>/scripts/bbdd/02_sample_data.sql
    
  • Configurar el JBoss per a accedir a la base de dades (veure Guia de configuració apartat "5. Configuració d'un Datasource en JBOSS") i crear els datasources que facin falta afegint-los dins l’etiqueta de l’standalone.xml:

    <!-- SERPROES === datasource === -->
    <datasource jndi-name="java:/SerproesDS" pool-name="SerproesDS">
        <connection-url>jdbc:postgresql://localhost:5432/serproes</connection-url>
        <driver-class>org.postgresql.Driver</driver-class>
        <datasource-class>org.postgresql.ds.PGSimpleDataSource</datasource-class>
        <driver>postgresql</driver>
        <security>
            <user-name>serproes</user-name>
            <password>serproes</password>
        </security>
        <validation>
            <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
            <background-validation>true</background-validation>
            <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
        </validation>
    </datasource>
    

Documentació

Nom Descripció Enllaç
(CAT) Guia de configuració.odt Guia de configuració Document

Llicència

License: MIT

[1] Keycloak Javascript Adapter

[2] Keycloak connection using a Java application

[3] auth0/java-jwt

About

Demo de l'aplicació serproes amb autenticació keycloak i accés a Api Rest.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published