Propòsit
Aquest mòdul permet la validació de Signatures electròniques mitjançant els serveis de PSIS oferts per CatCert.
Instal.lació i Configuració
Instal.lació
Afegir manualment en el pom.xml de l’aplicació la següent dependència:
<dependency>
<groupId>conectores</groupId>
<artifactId>psis</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Configuració
Ubicació: <PROJECT_ROOT>/src/main/resources/config/props/application.yml
| Propietat | Requerit | Descripció |
|---|---|---|
| *.psis.urlPica | Sí | Url del WebService de PSIS. Valor per defecte: http://preproduccio.pica.intranet.gencat.cat/pica_cataleg/AppJava/services/ |
| *.psis.finalitat | Sí | Finalitat de l’accés al servei. |
| *.psis.nifEmisor | Sí | Nif de l’emisor |
| *.psis.nomEmisor | Sí | Nom de l’emisor |
| *.psis.nomFuncionari | Sí | Nom del funcionari |
| *.psis.nifFuncionari | Sí | Nif del funcionari |
| *.psis.emailFuncionari | Sí | Email del funcionari |
Els valors de finalitat, urlPica, nifEmisor i nomEmisor s’han de consultar a la OT PICA
Aquest mòdul és dependent del modul PICA amb lo qual també s’ha de configurar aquest. Exemple:
pica:
axisdefinition: classpath:axis2client/
modes:
passwordType: PasswordText
requirer:
password: USER_PASS
petitionerId: 1DPGO049
petitionerName: CTTI
signatureFile: classpath:config/cert/signature.properties
transmitionId: 213421
user: CANIGO
trustStore:
location: classpath:config/cert/certificats.jks
password: PASSWORD_DE_LA_TRUSTSTORE
type: JKS
modalitats:
PADRO_MUNICIPI_RESIDENCIA:
signat: false
url-pica: http://preproduccio.pica.intranet.gencat.cat/pica_cataleg/AppJava/services/PADRO_MUNICIPI_RESIDENCIA
cod-certificado: PADRO_MUNICIPI_RESIDENCIA
cod-producto: PADRO
finalidad: PROVES
nif-emisor: Q0801175A
nombre-emisor: CONSORCI AOC
password-type: PasswordText
requeridor:
fitxer-signatura: classpath:config/cert/pica.signature.properties
id-solicitante: 1DPGO049
id-transmision: 213421
nombre-solicitante: CTTI
password: USER_PASS
user: CANIGO
psis:
finalitat: PROVES
urlPica: http://preproduccio.pica.intranet.gencat.cat/pica_cataleg/AppJava/services/
nifEmisor: Q0801175A
nomEmisor: CONSORCI AOC
nomFuncionari: OTPICA
nifFuncionari: 11111111H
emailFuncionari: prova@gencat.net
Utilització del Mòdul
REST
Per a utilitzar aquest mòdul, cal crear un Controller i un Service:
PsisService.java
Classe Java on es realitzarà la lògica de la operació a realitzar.
En aquest exemple es valida la caducitat d’un certificat amb PSIS:
import conectores.psis.PSISConnector;
import conectores.psis.exceptions.PSISException;
import net.gencat.pica.psis.schemes.valcertsimppicarequest.ValCertSimpPICARequest;
import net.gencat.pica.psis.schemes.valcertsimppicaresponse.ValCertSimpPICAResponse;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.InputStream;
@Service
public class PsisService {
@Autowired
private final PSISConnector psisServices;
public PsisTestService(PSISConnector psisServices) {
this.psisServices = psisServices;
}
private static final Logger logger = LoggerFactory.getLogger(PsisTestService.class);
private static byte[] certificatCaducat =
getBytesFromInputStream(Thread.currentThread().getContextClassLoader().getResourceAsStream("config/cert/certificatCaducat.crt"));
private static byte[] getBytesFromInputStream(InputStream is) {
byte[] resultat = null;
try {
resultat = IOUtils.toByteArray(is);
} catch (Exception e) {
logger.error(e.getMessage(),e);
}
return resultat;
}
public String testValidarCertificatCaducat() {
logger.debug("[testValidarCertificatCaducat]");
String message;
try{
//psisServices = new PSISConnectorImpl();
ValCertSimpPICARequest peticioValidar = new net.gencat.pica.psis.schemes.valcertsimppicarequest.ObjectFactory().createValCertSimpPICARequest();
peticioValidar.setCertificat(certificatCaducat);
ValCertSimpPICAResponse resposta = psisServices.validarCertificat(peticioValidar);
if (resposta!=null && resposta.getResultat()!=null){
message = "S'ha verificat la caducitat del certificat amb el següent resultat: "+ resposta.getResultat();
}else{
message = "No s'ha rebut resposta del servei o el format d'aquesta no es l'esperat";
}
} catch (PSISException e) {
message = "S'ha produït un error al servei";
logger.error(e.getMessage(), e);
} catch (Exception e) {
message = "S'ha produït un error general";
logger.error(e.getMessage(), e);
}
return message;
}
}
PsisServiceController.java
Controller que publica les operacions disponibles per a qui hagi de consumir-les
import com.standalone.psistest.service.PsisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/psis")
public class PsisController {
@Autowired
private PsisService psisService;
@GetMapping("/psis")
public String testValidarCertificatCaducat() {
String message = psisService.testValidarCertificatCaducat();
return message;
}
}