ESUP-Portail 21 sept. 2016 @Paris ESUP-Days #22

Logo EsupNfcTag ESUP NFC TAG

pour des services institutionnels utilisant les cartes NFC


Plan

  1. Points clefs de la présentation
  2. Contexte, objectif et contraintes
  3. Tag NFC - Késako ?
  4. Prototypes
  5. Esup NFC Tag
    1. Principes
    2. Cas d'usage
  6. Démonstration
  7. Questions
  8. Annexes

Esup NFC Tag

Points clefs de la présentation

Points clefs de la présentation

  • EsupNfcTag
  • ... mais plus généralement :
    • Usage des cartes multi-services
    • Usage de smartphones (Android) pour porter un service technique
    • Architecture d'une application mobile avec webview prédominante
    • Usage d'un dispositif électronique accessible / grand public

Esup NFC Tag

Contexte, objectif et contraintes

Contexte / Objectifs / Contraintes

Contexte et objectif

  • Contexte : une carte étudiante/professionnelle/campus
    • nommée Léocarte
    • portée par la COMUE Normandie Université
    • permettant d'ouvrir des portes, de se restaurer et d'imprimer
  • Objectif :
    • Proposer des services "institutionnels" au travers de cette Léocarte
      • Livraison Léocarte
      • Coupons culture
      • Recherche par carte dans une application de gestion de comptes
      • Contrôle d'assuidité
      • ???

Contexte / Objectifs / Contraintes

Contraintes

  • Proposer une solution
    • interfaçable facilement avec les applications métiers consommateur de l'évènement "badgeage"
    • capable d'identifier (eppn) le porteur de carte via le CSN ou mieux encore un identifiant en application/fichier "Desfire"
    • facilement déployable.

Esup NFC Tag

Tag NFC / Léocarte

Tag NFC / Léocarte

Késako ?

Tag NFC / Léocarte

> Badgeage

Tag NFC / Léocarte

Lecteurs

  • Pour « lire » une leocarte plusieurs solutions, exemples :
    • Ordinateur
      • Lecteur USB + Driver
      • Application lourde
    • Dispositif léger
      • Basé sur Arduino
      • et composants : ethernet, led, nfc, lcd, buzzer...
    • Tablette ou Smartphone
      • Intégrant un lecteur NFC
      • Avec une application maison

Esup NFC Tag

Prototypes

Prototypes

> Arduino

Prototypes

> Android

Esup NFC Tag

Solution Esup NFC Tag

Esup NFC Tag

> EsupNFCTagDroid

  • Application mobile Android basée sur une webView
    • Affichage d'une vue HTML5 fournie par la partie serveur
    • Lecture de carte via api native Android
    • Envoi du csn ou desfireId par webService
    • Rafraichissement de la vue par Long Poll sur déclenchement d'événements

Esup NFC Tag

> EsupNFCTagServer

  • Application serveur Spring
    • Application shibbolethisée
    • Fournit la vue mobile
    • Etablit la communication entre le mobile et les apis métiers
    • Gère la connexion des différents périphériques (token)
    • Gère la configuration NFC (CSN ou Desfire)
      (En mode Desfire le mobile n'a pas connaissance de la clé de chiffrement AES)

Esup NFC Tag

> Schéma de principe

proto2

Esup NFC Tag

> Première connexion

  • Connexion Shibboleth via webView
  • Affichage des "locations"
  • Choix du lieu
  • Inscription d'un token dans le local storage (coté mobile)
  • Plus de connexion nécessaire
  • Esup NFC Tag

    > Schéma d'un badgeage

    Schéma d'un badgeage

    Esup NFC Tag

    Cas d'usage

    • Dématérialisation des coupons culture
    • Livraison des cartes étudiants
    • Le materiel de badgeage est à usage interne, les smartphones sont livrés pré-installés
    • Pas de développement sur d'autres plateformes
    • Pas de Play Store

    Esup NFC Tag

    Cas d'usage : la carte culture

    Schéma / Workflow Carte Culture

    Esup NFC Tag

    Démonstration

    Installations / Recharges de téléphones

    Live

    Applications

    Devices

    Details

    Carte culture : tags

    Carte culture : espace partenaire

    Carte culture : stats

    Esup NFC Tag


    Questions

    Esup NFC Tag


    Annexe

    Esup NFC Tag

    Cas d'usage

    • Carte Culture
      • L'application métier Carte Culture fournit une liste de salles en fonction du login du gestionnaire de salle (getLocations)
      • Lors du badgeage c'est l'application Carte Culture qui contrôle l'identité de l'étudiant dans sa propre base (tagIdCheck)
      • Après verification du nombre de coupons (isTagable), le badgeage peut être validé (validateTag)

    Esup NFC Tag

    > Implémentation

    • 4 fonctions à implémenter
      • TagLog tagIdCheck(desfireId, csn)
        recupération de l'eppn en fonction du csn ou idp2s
      • List<String> getLocation(eppn)
        recupération des lieux en fonction de l'eppn
      • ResponseEntity<String> isTagable(tagLog)
        permet de contrôler si l'individu peut badger
      • ResponseEntity<String> validateTag(tagLog)
        déclenchement des actions métier si le badgeage est validé

    Esup NFC Tag

    > Implémentation

    • L'objet TagLog
      
      	    @RooJavaBean
      	    @JsonIgnoreProperties(ignoreUnknown = true)   
      	    public class EsupNfcTagLog {
      
      	    String csn;
      
      	    String eppn;
      
      	    String desfireId;
      
      	    String lastname;
      
      	    String firstname;
      
      	    String location;
      
      	    String eppnInit;
      	    }
      	    
      	  

    Esup NFC Tag

    > Implémentation

    • Déclaration des implémentations dans
      applicationContext-custom.xml
    	
    	<bean id="carteCultureExtApi" class="org.esupportail.nfctag.service.api.impl.AppliExtRestWs">
    	<property name="isTagableUrl" value="https://app.univ-ville.fr/nfc-ws/isTagable"/>
    	<property name="validateTagUrl" value="https://app.univ-ville.fr/nfc-ws/validateTag"/>
    	<property name="getLocationsUrl" value="https://app.univ-ville.fr/nfc-ws/getLocations"/>
    	<property name="description" value="Web Service Carte Culture"/>
    	<property name="backgroundColor" value="rgb(121, 119, 116)"/>
    	<property name="header" value="https://app.univ-ville.fr/resources/images/logo.jpg"/>
    	</bean>
          
    	<bean id="tagIdCheckApiId" class="org.esupportail.nfctag.service.api.impl.TagIdCheckRestWs">
    	<property name="tagIdCheckUrl" value="https://app-id.univ-ville.fr/wsrest/tagIdCheck"/>
    	<property name="description" value="via Id"/>
    	</bean>
          

    Esup NFC Tag

    > Implémentation

    • Ex : livraison de carte
      • isTagable
        
        		@RequestMapping(value="/leocarte/livraison/isTagable",  method=RequestMethod.POST)
        		@ResponseBody
        		public ResponseEntity isLeocarteOk4Livraison(@RequestBody EsupNfcTagLog esupNfcTagLog) {
        		  HttpHeaders responseHeaders = new HttpHeaders();
        		  return new ResponseEntity("OK", responseHeaders, HttpStatus.OK);
        		    }
        	      
      • validateTag
        
        		@RequestMapping(value="/leocarte/livraison/validateTag",  method=RequestMethod.POST)
        		@ResponseBody
        		public ResponseEntity livraisonLeocarte(@RequestBody EsupNfcTagLog esupNfcTagLog) {
        		  HttpHeaders responseHeaders = new HttpHeaders();
        		  try {
        		  String loginInit = esupNfcTagLog.getEppnInit().replaceAll("@univ-rouen.fr", "");
        		  IndividuService.easyIdLivre(esupNfcTagLog.getEppn(), esupNfcTagLog.getCsn());
        		  return new ResponseEntity("OK", responseHeaders, HttpStatus.OK);
        		    } catch(Exception e) {
        		    return new ResponseEntity("KO", responseHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
        		      }
        		      }