Récupération des sources
Lorsque tous les Prérequis sont installés et PostgreSQL configuré, vous pouvez récupérer les sources.
Info |
---|
A partir de cette étape vous n’êtes plus en root. Ici l'utilisateur courant est le compte local esup : |
Bloc de code |
---|
|
cd /opt/
sudo mkdir esup-signature
sudo chown esup:esup esup-signature/ -R
git clone https://github.com/EsupPortail/esup-signature.git
cd esup-signature |
Configuration
Avertissement |
---|
Le fichier application.yml présent dans les sources est un exemple de configuration basée sur environnement comportant un LDAP et un gestionnaire de groupes (grouper utiliser par l'Université de Rouen en l’occurrence). Les mentions de "for.esup-signature.xxxx" correspondent aux noms des groupes fournis par grouper. Cela ne veut pas dire que grouper soit obligatoire ni même que les noms de groupes doivent respecter ce format. Esup-signature propose un attribut group-to-role-filter-pattern qui vous permet de configurer un préfixe correspondant à votre format de noms de groupes (for.esup-signature. a Rouen) |
src/main/resources/i18n/messages.properties
Vous pouvez modifier les premières ligne du fichier messages.properties pour spécifier le texte du footer et le titre de l'application
Bloc de code |
---|
|
application.title = Esup Signature
application.version=1.0
application.footer=Université de Rouen Normandie |
src/main/resources/logback.xml
Par défaut le chemin est relatif.
Remarque |
---|
Si vous modifiez l'emplacement du fichier de log par un chemin absolu, celui-ci doit exister et être accessible au compte qui exécute esup-signature. |
Bloc de code |
---|
|
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/esup-signature.log</file>
<append>true</append>
<immediateFlush>true</immediateFlush>
<encoder>
<pattern>[%-5level] %date{dd/MM/yyyy HH:mm:ss} %logger{35} - %msg%n</pattern>
</encoder>
</appender>
|
src/main/resources/application.yml
La configuration d' esup-signature se fait au travers du fichier src/main/ressource/application.yml
Pour commenter une ligne il faut ajoute un # devant.
Avertissement |
---|
Il faut faire attention à l'indentation lors de la modification du fichier. Une mauvaise indentation peut faire échouer la compilation |
global
Dans la plupart des cas il s'agit ici de modifier root-url par l'adresse de votre esup-signature. Vous pouvez aussi configurer le système d'archivage et activer le switch user.
Bloc de code |
---|
|
global:
root-url: https://esup-signature.univ-ville.fr # Adresse d'accès à votre instance
nexu-url: https://localhost:9895
nexu-version: 1.23-SNAPSHOT
nexu-download-url: /downloads/nexu-bundle.zip
hide-wizard: false # Désactiver le bouton "Assistant de création de demande"
hide-auto-sign: false # Désactiver le bouton "Auto siganture"
hide-send-sign-request: false # Désactiver le bouton "Demander une signature"
hide-wizard-except-roles: # rôles faisant exception à la règle hide-wizard précédente
hide-auto-sign-except-roles: # rôles faisant exception à la règle hide-auto-sign précédente
hide-send-sign-except-roles: # rôles faisant exception à la règle hide-send-sign précédente
# archive-uri: smb://serveur_fichier/archives # chemin pour l'archivage des documents
# delay-before-cleaning : 0 # Délai en jours après signature pour archivage et nettoyage des documents (désactivé si commenté)
enable-su: false # Activer ou non le switch user
enable-splash: true # Activer ou non le message d'accueil de la première connexion
application-email: esup.signature@univ-ville.fr # Adresse email avec laquelle seront envoyés les alertes mail
|
Pour la gestion des rôles voir : Documentation administrateur#Gestiondesr%C3%B4les
tomcat
Ce paramètre permet de spécifier le port ajp dans le cas ou l'application est démarrée directement (en utilisant mvn springboot:run par exemple)
Par défaut ces lignes sont commentées, cela doit être ainsi lorsque l'application est démarrée par un serveur Tomcat.
Bloc de code |
---|
|
#tomcat:
# ajp:
# port: 6009 |
spring
datasource
Configuration de la base de donnée :
Bloc de code |
---|
|
datasource:
driver-class-name: org.postgresql.Driver
hikari:
auto-commit: false
password: esup
url: jdbc:postgresql://localhost:5432/esupsignature
username: esupsignature |
jpa
Il faut prêter une attention particulière au paramètre ddl-auto. Mode update permet la création et la mise à jour de la base de donnée lors du démarrage de l'application ou des tests. Ce mode peut éventuellement être utilisé lors des mises à jour de l'application. Le reste du temps (en production par exemple) ce paramètre peut être positionné sur validate qui ne fera qu’exécuter un contrôle de la base de données.
Avertissement |
---|
Attention au mode create qui, lui, détruit et re-crée la base complète au moment du démarrage de l'application |
Bloc de code |
---|
|
hibernate:
ddl-auto: update
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
format_sql: true
jdbc:
lob:
non_contextual_creation: true
show-sql: false |
ldap
Configuration de l'accès ldap pour spring (obligatoire si l'authentification CAS est activée)
Bloc de code |
---|
|
ldap:
base: dc=univ-ville,dc=fr
password: ********
urls: ldap://ldap.univ-ville.fr
username: cn=consult,dc=univ-ville,dc=fr |
mail
Configuration du serveur de mail pour l'envoi des alertes
Bloc de code |
---|
|
mail:
host: smtp.univ-ville.fr |
ldap
La configuration ldap hors spring est spécifique à votre établissement, elle précise les modalités de recherche de vos utilisateur dans l'annuaire
Bloc de code |
---|
|
ldap:
search-base: ou=people # base de recherche (ou dans laquelle se trouve les comptes utilisateurs
group-search-base: ou=groups # base des groupes
user-id-search-filter: (uid={0}) # le champ dans lequel on trouve le login des utilisateurs
group-search-filter: member={0} # filtre pour la recherche des groupes
member-search-filter: (&(uid={0})({1})) # filtre pour contrôler l'appartenance à un groupe
mapping-filters-groups: # liste d'attribution de groupe en fonction d'un filtre LDAP
student : "eduPersonAffiliation:=student"
staff : "eduPersonAffiliation:=staff" |
Info |
---|
On peut utiliser mapping-filters-groups pour attribuer des rôles, par exemple le ROLE_USER (nécéssaire pour l'accès à l'application). Exemple : avec user : "eduPersonAffiliation:=member", toutes les personnes issue de ce filtre se verront affectées au groupe <pattern>user (voir group-to-role-filter-pattern). Si votre pattern est "toto.", l'utilisateur sera considéré dans le groupe toto.user si dans mapping-groups-roles on a toto.user: ROLE_USER, l'utilisateur obtiendra le rôle user. |
Pour la gestion des rôles voir : Documentation administrateur#Gestiondesr%C3%B4les
mail
Dans la partie mail (hors spring) vous pouvez paramétrer l'adresse from pour l'envoi de mails
Bloc de code |
---|
|
mail:
from: no-reply.esup-signature@univ-ville.fr |
sms
Cette partie permet de configurer un service d'envoi de sms pour l'utilisation de la fonction One Time Password à destination des personnes extérieures à l’établissement. Pour l'instant seule une implémentation pour SMSU est disponible
Bloc de code |
---|
|
sms:
enable-sms : false
# service-name: SMSU
# url: https://smsu-api.univ-ville.fr/
# username: sms-account
# password: ******** |
dss
ks-filename : par défaut le chemin est relatif. Comme dans la configuration logback, si vous voulez spécifier un chemin absolu, le dossier doit avoir été créé avant le premier lancement.
trusted-certificat-url-list : ici vous pouvez ajouter des liens vers les url des certificats non présents dans le journal officiel mais valide dans votre établissent :
Bloc de code |
---|
|
dss:
cache-data-source-driver-class-name: org.hsqldb.jdbc.JDBCDriver
cache-data-source-url: jdbc:hsqldb:mem:cachedb
cache-password:
cache-username: sa
default-validation-policy: policy/sign-constraint.xml
server-signing-keystore-filename: validate_service.p12
server-signing-keystore-password: password
server-signing-keystore-type: PKCS12
tsp-server: http://tsa.belgium.be/connect
ks-filename: oj_keystore.p12
ks-password: dss-password
ks-type: PKCS12
lotl-country-code: EU
lotl-url: https://ec.europa.eu/tools/lotl/eu-lotl.xml
oj-url: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.C_.2019.276.01.0001.01.ENG
trusted-certificat-url-list: https://cacerts.digicert.com/DigiCertAssuredIDRootG3.crt, https://cacerts.digicert.com/DigiCertAssuredIDRootCA.crt, https://cacerts.digicert.crt
|
fs (file system)
La partie file system (fs) permet de configurer une source principale de donnée pour chaque type de stockage (smb, cmis, vfs). esup-signature ne prend en charge qu'une seule source par type.
Bloc de code |
---|
|
fs:
# smb-login: esup-signature
# smb-password: ********
# smb-uri: smb://smb.univ-ville.fr
vfs-uri: /tmp
# cmis-uri: https://esup-signature.univ-ville.fr/nuxeo
# cmis-login: Administrator
# cmis-password: Administrator
# cmis-respository-id: default
# cmis-root-path: /default-domain/workspaces |
pdf
Paramètres de traitement des PDF
Bloc de code |
---|
|
convert-to-pdf-a: true
height: 842
path-to-g-s: /usr/bin/gs
pdf-a-level: 2
pdf-to-image-dpi: 72
sign-width-threshold: 150
width: 595 |
security
La sécurité est gérée par Spring Security. Il est possible d'activé 3 mécanismes de sécurité : OAuth, Shibboleth et/ou CAS. Pour désactiver une ou l'autre de ces méthodes, il suffit de commenter les lignes qui s'y réfèrent.
Remarque |
---|
CAS nécessite la configuration d'un LDAP. C'est la solution idéale pour une utilisation interne |
Info |
---|
|
Pour CAS : domain : votre domaine group-mapping-role-admin : nom du "cn" du groupe dans ou=groups. Donne les droits d'administration. (Plus besoin de préfixer par ROLE_ ni de mettre le nom du groupe en majuscule) key : une clé CAS (Spring Security nécessite une clé, il est possible de mettre ce que l'on veut) url : l'adresse de votre serveur CAS |
Info |
---|
|
Pour Shibboleth : credentials-request-header : attribut dans lequel on trouve les groupes de l'utilisateur idp -url : adresse de votre IDP Shibboleth principal-request-header : attribut dans lequel on trouve l'identifiant de l'utilisateur |
Bloc de code |
---|
|
cas:
service: https://esup-signature.univ-ville.fr/login/cas
title: Compte Université (CAS)
url: https://cas.univ-ville.fr
# shib:
# credentials-request-header: MEMBER
# idp-url: https://idp.univ-ville.fr
# principal-request-header: REMOTE_USER
# title: Compte d’un autre établissement (Shibboleth)
# domains-white-list-url: https://eduspot.renater.fr/eduspot/whitelist-eduspot.txt
web:
group-to-role-filter-pattern: <pattern groupe esup-signature>(\w*) #ici on configure un pattern permettant de retrouver (discerner) vos groupes dédiés à esup-signature
mapping-groups-roles:
<nom du groupe des administrateurs>: ROLE_ADMIN
<nom du groupe utilisateur autorisés à accéder à l'application>: ROLE_USER
ws-access-authorize-ips: 127.0.0.1
# group-mapping-spel:
# for.esup-signature.user: "true" |
Info |
---|
group-to-role-filter-pattern: Ce pattern permet de donner des rôles correspondants à (\w*) (dans cet exemple, si l'utilisateur est dans le groupe for.esup- signature.role.bondecommande, il obtiendra le role ROLE_BONDECOMMANDE). On peut l'utiliser en lien aves la propriété mapping-filters-groups mapping-groups-roles: Permet de définir des rôles en fonction des groupes de l'utilisateur. Le ROLE_USER est maintenant obligatoire pour accéder à l'application. Si constituer un groupe d'utilisateur est difficile, vous pouvez utiliser mapping-filters-groups dans la conf ldap pour constituer des groupes à l'aide de requêtes ldap.
ws-access-authorize-ips : permet de configurer les adresses autorisées à accéder aux web services d' esup-signature group-mapping-spel: Sert à outre passer les groupes obtenus via ldap. Ceci est utiles si vous n'avez pas de configuration LDAP (shib pure). Ex: pour donner ajouter à tout le monde le groupe for.esup-signature.user on peut mettre for.esup-signature.user: "true". On peut utiliser la syntaxe suivante pour saisir "en dure" des personnes : for.esup-signature.admin: "#eppn == 'toto@univ-ville.fr' or #eppn == 'titi@univ-ville.fr' " |
server
Paramètre du serveur lors d'un lancement hors tomcat
Bloc de code |
---|
|
server:
error:
include-stacktrace: always
port: 8080
|
sign
Vous pouvez ajuster finement les paramètres de signature électronique en modifiant les lignes suivante:
Bloc de code |
---|
|
sign:
cades-digest-algorithm: SHA256
cades-signature-level: CAdES_BASELINE_T
container-type: ASiC_E
default-signature-form: XAdES
pades-digest-algorithm: SHA256
pades-signature-level: PAdES_BASELINE_T
password-timeout: 60000
signature-packaging: ENVELOPED
xades-digest-algorithm: SHA256
xades-signature-level: XAdES_BASELINE_T |
Avertissement |
---|
Lorsque votre configuration sera terminée, vous devez creer un commit git, ceci afin d'éviter tout problème lors d'une prochaine mise à jour. Les commandes git à lancer: Bloc de code |
---|
| git add .
git commit -m "ma conf de prod" |
|