Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

En conclusion, gardez à l'esprit qu'en tant que communauté et développeurs d'ESUP-SGC, nous n'avons aucun intérêt à vous convaincre de passer à ESUP-SGC si vous n'avez tout simplement pas l'envie, la motivation, la volonté d'adhérer à ce projet ; on serait très embêtés (en plus d'être étonnés tout de même (clin d'œil) ) qu'ESUP-SGC vous donne moins de satisfaction que votre ancienne solution !

Est-ce qu'ESUP-SGC est configurable pour s'adapter à mon établissement ? Combien et quels établissements l'utilisent actuellement ?

ESUP-SGC 

De quel matériel ai-je besoin ?

...

Bloc de code
languagetext
themeRDark
accessRestrictionWSRestApi=hasIpAddress('127.0.0.1') or hasIpAddress('192.168.1.39') or hasIpAddress('192.168.22.0/24')

Comment passer la carte d'un état à un autre via web-service ?

Le passage d'un état à un autre d'une carte peut se faire via l'appel à un webservice. Cet appel ressemble à ceci :

Bloc de code
languagebash
themeRDark
curl -d "etat=REQUEST_CHECKED" https://esup-sgc.univ-ville.fr/wsrest/api/setCardEtat/1818864

1818864 est l'id de la carte. Cet appel retourne true ou false suivant que la commande a réussi ou échoué.

Ainsi, si on veut par exemple demander une carte par web-service et valider aussitôt cette demande, il faudra appeler le web service de la question précédente suivie de celui-ci.

Lors de cet appel au WebService, les paramètres possibles correspondent en réalité à l'ensemble des attributs d'une Carte au sens Java. On peut déduire ces paramètres du code Java lui-même donné ici : https://github.com/EsupPortail/esup-sgc/blob/master/src/main/java/org/esupportail/sgc/domain/Card.java

 Exemple d'appel WEB-Service spécifiant le CSN et le numéro de contrôle d'accès dans le cadre où on souhaiterait 'importer' des cartes éditées par une autre solution Exemple en python :

Bloc de code
languagepybash
themeRDark
curl -F "desfireIds[access-control]=12340000000125" -F "csn=0479CDE56F1490"  -F "eppn=toto@univ-ville.fr" -F "difPhotoTransient=true" -F "crousTransient=true" -F "europeanTransient=true" -F "PhotoFile.file=@/tmp/toto.jpeg" https://esup-sgc.univ-ville.fr/wsrest/api

Notez qu'on peut donc ici spécifier l'etat dans lequel on souhaiterait voir la carte éditée (-F "etat=ENCODED" par exemple) mais suivre le cycle de vie de la carte peut cependant être préférable pour pouvoir
bénéficier des appels de fonctions entre les transitions de la carte (positionnement des rectos imprimés, envoi d'email, activation de la carte) : d'autant qu'une fois la demande créee, on peut aussi passer les changements d'états par WS également.

Comment passer la carte d'un état à un autre via web-service ?

Le passage d'un état à un autre d'une carte peut se faire via l'appel à un webservice. Cet appel ressemble à ceci :

Bloc de code
languagebash
themeRDark
curl -d "etat=REQUEST_CHECKED" https://esup-sgc.univ-ville.fr/wsrest/api/setCardEtat/1818864

1818864 est l'id de la carte. Cet appel retourne true ou false suivant que la commande a réussi ou échoué.

Ainsi, si on veut par exemple demander une carte par web-service et valider aussitôt cette demande, il faudra appeler le web service de la question précédente suivie de celui-ci.

Exemple en python :


Bloc de code
languagepy
themeRDark
#!/usr/bin/env python3                  #!/usr/bin/env python3                                                                                                                                                                        
# -*- coding: utf-8 -*-                                                                                                                                                                       

import requests

api_url = "https://esup-sgc.univ-ville.fr/wsrest/api"
response = requests.post(api_url, data={"eppn":"toto@univ-ville.fr"}, files={"PhotoFile.file":("photo-toto.png", open("/tmp/photo-toto.png","rb"), "image/png")})
card_id = response.text
response = requests.post("%s/setCardEtat/%s" % (api_url, card_id), data={"etat":"REQUEST_CHECKED"})
print(response.text)

...

Bloc de code
languagebash
themeRDark
curl -d "etat=ENCODED" -d "csn=061D72BB3E7280" https://esup-sgc.univ-ville.fr/wsrest/api/setCardEtat/205

Notez qu'on peut également positionner ce CSN et tout autre attribut de la carte dès la création de la carte par Web-Service - voir à ce propos la question ci-avant "Comment faire une demande de carte en utilisant le webservice proposé par ESUP-SGC ?".

De quelles données utilisateur issues du SI esup-sgc a besoin  ?

...

  • Récupérer la dernière photo en date dans un état donné d'un utilisateur : 

    Bloc de code
    languagebash
    themeRDark
    wget 'http://localhost:8080/wsrest/photo/joe@univ-ville.fr/photo?cardEtat=ENABLED'
    

    (état activé ici)

  • Récupérer la dernière photo en date dans un état donné d'un utilisateur après une date précisée (renvoie un code http 304 si la photo en question n'a pas été modifiée depuis cette date) : ) : 

Bloc de code
languagebash
themeRDark
wget 'http://localhost:8080/wsrest/photo/joe@univ-ville.fr/photo?cardEtat=ENABLED&dateEtatAfter=2018-06-19'

Pour prendre en compte le choix de l'utilisateur de diffuser ou non sa photo, on peut faire les mêmes requêtes avec /restrictedPhoto en lieu et place de /photo :

Bloc de code
languagebash
themeRDark
wget 'http://localhost:8080/wsrest/photo/joe@univ-ville.fr/photorestrictedPhoto?cardEtat=ENABLED&dateEtatAfter=2018-06-19'
'

Comment récupérer par script / API / SQL les données et cartes d'un ou plusieurs utilisateurs ?

Esup-sgc propose une API permettant de récupérer les données et carte d'un ou plusieurs utilisateurs.

Pour pouvoir utiliser ce web service, l'IP du client doit être référencé dans accessRestrictionWSRestApi, fichier security.properties

Bloc de code
languagebash
themeRDark
wget 'http://localhost:8080/wsrest/api/get?eppn=toto@univ-ville.fr&eppn=titi@univ-ville.fr'

La récupération du CSN de la carte active peut se faire ainsi par exemple Pour prendre en compte le choix de l'utilisateur de diffuser ou non sa photo, on peut faire les mêmes requêtes avec /restrictedPhoto en lieu et place de /photo :

Bloc de code
languagebash
themeRDark
wgetcurl -s 'http://localhost:8080/wsrest/photo/joe@univ-ville.fr/restrictedPhoto?cardEtat=ENABLED'

Comment récupérer par script les données et cartes d'un ou plusieurs utilisateurs ?

Esup-sgc propose une API permettant de récupérer les données et carte d'un ou plusieurs utilisateurs.

Pour pouvoir l'utiliser, l'IP du client doit être référencé dans accessRestrictionWSRestApi, fichier security.properties

api/get?eppn=toto@univ-ville.fr' | jq '.[] | select(.eppn == "toto@univ-ville.fr") | .cards[] | select(.etat == "ENABLED") | .csn'

Notez qu'on peut aussi facilement récupérer ces mêmes données via une simple requête SQL dont la base de données est simple et stable :

Bloc de code
languagesql
themeRDark
select csn from card where eppn='toto@univ-ville.fr' and etat='ENABLED';
Bloc de code
languagebash
themeRDark
wget 'http://localhost:8080/wsrest/api/get?eppn=toto@univ-ville.fr&eppn=titi@univ-ville.fr'

Quelle version de Java puis-je utiliser ?

...

Aussi retenons que :

  • EV2 est donc à la fois des cartes EV2 et un nouveau protocole EV2.
  • Les cartes Desfire EV2 supportent le protocole EV1 et le protocole EV2.
  • Les cartes Desfire EV1 ne supportent que le protocole EV1
  • Le protocole EV2 est plus sécurisé (et plus complexe du coup) que le protocole EV1.
  • Les nouvelles possibilités offertes par les cartes EV2 (application déléguée et libération de la mémoire) 
    •  ne sont pas supportées par les cartes EV1
    • mais peuvent être codées avec le protocole EV1.
  • ESUP-SGC au travers d'ESUP-NFC-TAG utilise le protocole EV1 (et est donc compatible avec les cartes EV1 et EV2).

Codées avec ESUP-SGC / ESUP-NFC-TAG (via le protocole EV1), l'usage des cartes EV2 avec le protocole EV2 (par exemple au travers du contrôle d'accès) apporteraient de fait une plus grande sécurité que son usage au travers du protocole EV1.
Cf la documentation NXP https://www.nxp.com/docs/en/fact-sheet/MIFARE-DESFIRE-EV2-FS.pdf : "Proximity Check protects against relay attacks".

ESUP-SGC / ESUP-NFC-TAG, dans le cadre du projet de Carte Etudiante Européenne devrait également prochainement (en cours d'implémentation) supporter au niveau de l'encodage les nouvelles possibilités offertes par EV2, à savoir le support des applications déléguées et de la libération de la mémoire.

  • la fois des cartes EV2 et un nouveau protocole EV2.
  • Les cartes Desfire EV2 supportent le protocole EV1 et le protocole EV2.
  • Les cartes Desfire EV1 ne supportent que le protocole EV1
  • Le protocole EV2 est plus sécurisé (et plus complexe du coup) que le protocole EV1.
  • Les nouvelles possibilités offertes par les cartes EV2 (application déléguée et libération de la mémoire) 
    •  ne sont pas supportées par les cartes EV1
    • mais peuvent être codées avec le protocole EV1.
  • ESUP-SGC au travers d'ESUP-NFC-TAG utilise le protocole EV1 (et est donc compatible avec les cartes EV1 et EV2).

Codées avec ESUP-SGC / ESUP-NFC-TAG (via le protocole EV1), l'usage des cartes EV2 avec le protocole EV2 (par exemple au travers du contrôle d'accès) apporteraient de fait une plus grande sécurité que son usage au travers du protocole EV1.
Cf la documentation NXP https://www.nxp.com/docs/en/fact-sheet/MIFARE-DESFIRE-EV2-FS.pdf : "Proximity Check protects against relay attacks".

ESUP-SGC / ESUP-NFC-TAG, dans le cadre du projet de Carte Etudiante Européenne devrait également prochainement (en cours d'implémentation) supporter au niveau de l'encodage les nouvelles possibilités offertes par EV2, à savoir le support des applications déléguées et de la libération de la mémoire.

Concernant EV3 (et toutes autres versions qui pourraient suivre), la logique de rétrocompatibilité est la même.

Peut-on utiliser l'application Desfire Crous/Izly via esup-nfc-tag et plus généralement dans nos services institutionnels comme le servie d'impression ou le contrôle d'accès ?

Si esup-nfc-tag (allié à esup-sgc) sait lancer la DLL CROUS/Izly pour écrire l'application crous/izly (on recommande cependant l'achat de cartes pré-encodées), esup-nfc-tag ne propose pas de lire l'application Desfire CROUS/Izly.

Il faut en fait considérer que l'application Desfire CROUS/Izly, même si elle est écrite sur vos cartes (et éventuellement par vous-même), ne vous appartient pas et ne devrait pas être utilisée en dehors du contexte précis pour lequel elle a été conçue (services du CROUS).

Cela exclut donc de fait l'usage de l'application Desfire CROUS/Izly au travers d'esup-nfc-tag, mais aussi au travers de votre service d'impression, de votre contrôle d'accès, etc.

Si vous souhaitez utiliser une application Desfire sur vos cartes pour le contrôle d'accès ou tout autre service, vous devez en écrire une (ou plusieurs) vous-même, qui vous appartient ; on vous y encourage, cela constitue en partie la raison d'être d'esup-nfc-tag allié à esup-sgc !Concernant EV3 (et toutes autres versions qui pourraient suivre), la logique de rétrocompatibilité est la même.

Est-ce que ESUP-SGC peut coder la DEUInfo de la care étudiante européenne ?

...