PROJET-INFO5 2021 Signature électronique eIDAS

=Le projet= Electronic IDentification Authentication and trust Services (eIDAS) est un règlement de l'UE sur l'identification électronique et les services de confiance pour les transactions électroniques au sein de l'Union Européenne.

Plusieurs services commerciaux proposent un service eIDAS.

Les applications à Polytech sont par exemple le circuit de signature des conventions de stage.

L'objectif du projet est la conception et l’implémentation d'un service eIDAS auto-hebergeable et open-source du workflow de documents par des acteurs identifiés au moyen de plusieurs systèmes d'authentification (OAuth2).

Exemples de services commerciaux
 * https://fr.wikipedia.org/wiki/DocuSign
 * https://yousign.com/fr-fr
 * https://www.universign.com/fr/
 * etc

=L'équipe=
 * Dima ASSI
 * Aleck BILOUNGA
 * Houda EL AJI
 * Otba ZERAMDINI

Supervisé par : M. Nicolas PALIX

=Journal=

Semaine du 25/01

 * 28/02: Attribution du projet
 * 29/02: Rendez-vous avec Nicolas PALIX
 * Présentation du projet et de son contexte
 * Discussion sur les outils de collaboration et conseils sur des librairies pour l'affichage de PDF

Semaine du 01/02

 * Mise en place des outils de collaboration
 * Serveur Discord
 * Groupe Facebook
 * Tableau Trello
 * Définition de tâches et répartition du travail
 * Répartition des rôles
 * Début Documentation sur EIDAS:
 * Réglementation EIDAS
 * Signature électronique
 * Documentation sur l'ANSSI
 * Recherche sur les librairies (pour visualiser des PDF : Jquery, ng2-pdf-viewer, ngx-extended-pdf-viewer,etc, écrire dans des PDF : Apache FOP, PDFBox)

Semaine du 08/02

 * Création projet Github
 * 12/02: Discussion sur l'avancée et des problème rencontrée lors de documentation sur le projet avec Nicolas PALIX
 * Documentation sur EIDAS :
 * Certificats ssl
 * Chaîne de certificats
 * Contraintes de l'ANSSI à respecter pour la réalisation de la signature électronique

Semaine du 15/02
Interruption Pédagogique


 * Recherche sur les différents services commerciaux existant réalisant la signature électronique (Yousign, Universign, DocuSign)
 * Conception architecturale
 * Diagramme UML
 * Diagramme de classe
 * Diagramme des cas d'utilisation
 * Due globale
 * Réalisation de maquettes
 * etc

Semaine du 22/02

 * 22/02: Rendez-vous Nicolas PALIX : Discussion sur l'avancement du projet, présentation du travail sur la conception de l'architecture de l'application
 * Conception :
 * Modifications apportées au diagramme de classe
 * Modifications apportées au diagramme d'objet
 * Documentation sur l'Horodatage électronique
 * Documentation sur l'ANSSI: Contraintes à respecter pour la réalisation et la validité de la signature électronique
 * 25/02: Rendez-vous avec Nicolas PALIX : Discussion sur la chaîne de certificats pour réaliser la signature et présentation des modifications apportées à l'architecture précédemment réalisée.
 * 26/02: Soutenance de mi-parcours

Semaine du 01/03

 * Travail sur le JDL de l'application
 * Génération avec JHispter de l'application du projet
 * Documentation Keycloak
 * Documentation sur Json Web Token(JWT)
 * Protocoles Oauth2 et OpenID connect
 * Documentation sur Spring Security
 * Envoi de mail
 * Configuration de Keycloak
 * Travail sur la liaison d'un utilisateur de Keycloak à un utilisateur de l'application jhipster.
 * Vérification d'email, réinitialisation de mots de passe lors de la creation d'un compte utilisateur
 * Configuration d'OTP avec Keycloak lors la création et la connexion d'un compte à l'application
 * Visualisation d'un PDF en mode scrollable dans une page de l'application avec la librairie ngx-extended-pdf-viewer
 * Test sur les librairies de signature à la main : signature_pad(retenu) et angular2-signaturepad (pas retenu)
 * Réalisation de la page d’accueil d'un compte connecté à l'application
 * 05/03: Rendez-vous avec Nicolas PALIX : Présentation de l'application généré et point d'avancement

Semaine du 08/03

 * Page de création d'un utilisateur d'une organisation dans l'application
 * Merge de branches


 * Positionnement d'un place holder pour poser la signature : cdkDrag Module d'Angular.
 * Visualisation d'un PDF en tant que canvas d'un PDF et une page à la fois avec pdfjslib-dist la librairie pdfjs-dist
 * export en CSV de la liste des utlisateurs et des organisations de l'application
 * 12/03: rendez-vous avec Nicolas PALIX : Point d'avancement et conseils sur l'implémentation du circuit de signature
 * Utilisation d'autres librairies:
 * Spire.PDF(version gratuite) pour lire et écrire dans les PDF et les sauvegarder
 * x509 pour la génération des certificats
 * bouncyCastle pour la génération des pairs de clés

Semaine du 15/03

 * Ajout de bouton pour le PDF avec afin de pouvoir changer de page.
 * Test sur la librairie PDFBox car non payante contrairement à Spire.pdf pour lire et écrire dans les PDF et les sauvegarder
 * Test sur la librairie Interactjs pour le PDF car elle semble plus complète pour placer un canvas dans un PDF et aussi détecter la position du canvas par rapport à la page actuelle du PDF : pas retenu car nous n'avons pas réussi à récupérer les coordonnées du canvas dans le PDF par manque de temps.
 * Travail sur la page de création d'un circuit de signature
 * Page de Chargement du document PDF pour la signature
 * Page d'Ajout des signataires au document
 * Page de Placement des cases dans le PDF où les signataires doivent signer (pas encore fait)
 * Page de récapitulatif et envoi de mail aux signataires pour finaliser la création d'un circuit de signature (pas encore fait)
 * Merge de branches


 * 19/03: Soutenance finale

=Liens=


 * Projet GitHub
 * Documentation Spring
 * Keycloak
 * Documentation Angular
 * Bootstrap 4 for Angular
 * Canvas Angular