GovernIB / projectebase

Projecte Base - JBoss 7.2 EAP & Open JDK 11
4 stars 0 forks source link

Estudiar si es posible tener un fichero independiente para la configuración del keycloak #69

Closed acuevas-dgtic closed 3 years ago

acuevas-dgtic commented 4 years ago

Para facilitar el uso de imágenes docker, sería deseable poder tener ficheros de configuración de keycloak de las aplicaciones en ficheros independientes del standalone.xml. Algo tipo aplicacion-keycloak.xml como se hace con los datasources. Desconozco si esto se puede hacer.

antonireus commented 4 years ago

Estic revisant la documentació del JBoss EAP 7.2 i no veig que es pugui fer exactament el mateix que amb els datasources, però si que es proporciona de forma general un sistema per automatitzar la gestió de la configuració. Li diven "Management CLI", i permet executar scripts, mitjançant el jboss-cli.bat/.sh de fins el directori bin.

El jboss-cli necessita connectar-se al servidor que estigui en marxa, o pot iniciar el servei únicament a efectes de fer els canvis necessaris de configuració. Se li poden passar comandes directament amb una consola o amb un fitxer.

Per exemple, amb el servidor aturat, fent: bin/jboss-cli.bat

embed-server --std-out=echo
/subsystem=keycloak/realm=GOIB:add(auth-server-url=http://localhost:8180/auth,ssl-required=EXTERNAL)
stop-embedded-server

Això arrancarà el servidor només a efectes de canvis de configuració, afegirà el REALM GOIB a dins el subsystem keycloak al fitxer standalone.xml i aturarà el servidor.

Si el servidor ja està en marxa a localhost, i cream un fitxer keycloak-config.cli amb el següent contingut:

/subsystem=keycloak/realm=GOIB:add(auth-server-url=http://localhost:8180/auth,ssl-required=EXTERNAL)
/subsystem=keycloak/secure-deployment=projectebase-back-1.0.0.war:add(realm=GOIB,resource=goib-default,use-resource-role-mappings=true,public-client=true,principal-attribute=preferred_username,verify-token-audience=true)

I executam bin\jboss-cli.bat -c --file=keycloak-config.cli

El -c és perquè es connecti a la instància que està en marxa a localhost. Això introduirà el següent dins la configuració:

        <realm name="GOIB">
            <auth-server-url>http://localhost:8180/auth</auth-server-url>
            <ssl-required>EXTERNAL</ssl-required>
        </realm>
        <secure-deployment name="projectebase-back-1.0.0.war">
            <realm>GOIB</realm>
            <resource>goib-default</resource>
            <use-resource-role-mappings>true</use-resource-role-mappings>
            <public-client>true</public-client>
            <principal-attribute>preferred_username</principal-attribute>
            <verify-token-audience>true</verify-token-audience>
        </secure-deployment>

Llavors entenc que un fitxer keycloak-config.cli amb aquestes comandes per crear el realm i els secure-deployment seria el que necessitaríem.

A efectes del seu ús de forma automatitzada, en el cas d'un docker, caldria tenir en compte el següent:

antonireus commented 4 years ago

Una altre qüestió que podria ser interessant, és que permet el deploy d'arxius .cli. Es tractaria d'un arxiu JAR que conté les aplicacions a fer deploy, més un script per fer el deploy i un per fer l'undeploy.

És a dir, podríem tenir un fitxer JAR que contengués:

El fitxer deploy.scr podria contenir les comandes per introduir les modificacions necessaries al JBoss, des d'instal·lar drivers (es podria empaquetar el driver dins aquest JAR), fins a crear datasources (o també empaqutar el fitxer projectebase-ds.xml dins el JAR) o la configuració del keycloak de la que parlam. El undeploy.scr conté les comandes que s'han d'executar quan es fa undeploy.

Per tant, fent deploy d'un sol fitxer projectebase.cli serviria per configurar i arrancar l'aplicació.