GovernIB / portafib

PortaFIB: Portafirmes Digital de les Illes Balears
6 stars 2 forks source link

Poder ficar contrasenyes emprades en Plugins dins portafib-properties-service.xml #328

Closed anadal-fundaciobit closed 3 years ago

anadal-fundaciobit commented 4 years ago

COM A: Sistemes VOLDRIA: que les urls, usernames i contrasenyes es configurin dins fitxers de propietats PER: Seguretat

Una solució seria emprar el ExpressionLanguage en la configuració d'aquests tipus de camps i forçar als Plugins que: (1) Per aquests camps (urls, usernames i contrasenyes), el valor obtingut de les propietats de configuració es passaria pel TemplateEngine (Freemarker) (2) Es passaria com a paràmetres el System.getProperties() com a paràmetre dins d'una variable anomenada "SP"

EXEMPLE: (A) FICAR en el fitxer portafib-service-properties.xml la següent propietat:

firma.servidor.username=nomusuari
firma.servidor.contrasenya=1234

(B) En les propietats de configuració del "Plugin de Firma en Servidor emprant @firma federat" modificar la següent propietat:

#Usuari-contrasenya
es.caib.portafib.plugins.signatureserver.afirmaserver.authorization.username=${SP["firma.servidor.username"]}
#Password del usuario o de la clave privada del certificado
es.caib.portafib.plugins.signatureserver.afirmaserver.authorization.password=${SP["firma.servidor.contrasenya"]}

(C) En el PLugin a l'hora de capturar el valor dels camps urls, usernames o contrasenyes es faria de la següent manera:

String plantilla = getValueOfPluginProperty("es.caib.portafib.plugins.signatureserver.afirmaserver.authorization.password");
Map<String, Object> parameters = new HashMap<String, Object>()
parameters.put("SP", System.getProperties());
String contrasenyaFinal = TemplateEngine.processExpressionLanguage(plantilla, parameters);

Emprant aquest codi, el valor de la variable contrasenyaFinal seria de "1234"

anadal-fundaciobit commented 4 years ago

(1) Per DocumentCustodyPlugin, ja tots els mètodes inclouen un paràmetre addicional "Map<String, Object> parameters". Només hauríem d'aplicar les substitucions en camps com URLs, Usernames i Passwords. Com a ultim pas, en la generació dels paràmetres (mètode getAdditionalParametersForDocumentCustody() de CustodiaInfoLogicaEJB) hauria d'incloure un paràmetre "systemproperties" asociat al l'objecte retornat per System.getProperties().

(2) Per la resta de Plugins, s'hauria de fer un refactoring a tots ells per a que els mètodes incloguessin un paràmetre "Map<String, Object> parameters" i després usar-ho en les substitucions en camps com URLs, Usernames i Passwords. Després dins PortaFIB afegir a parameters el System.getProperties().

(3) Finalment, els Administradors de PortaFIB, han d'anar substituint URLs, Usernames i Passwords de les propietats dels Plugins per trossos de codi avaluables (${systemproperties['es.caib.portafib.plugins.clau_plugin_custodia_arxiu_caib_password']}) i dins de portafib-properties-service.xml afegir la propietat: "es.caib.portafib.plugins.clau_plugin_custodia_arxiu_caib_password=unacontrasenya"

La prioritat de Plugins seria la següent:

Altres que o no tenen referències a contrasenyes o no són molt importants: