Dans le ficher applicationContext-desfire.xml on trouve la structure et les données qui seront écrites sur la carte lors de l’encodage.
Un premier objet DesfireTag décrit la carte en elle même :
Une clé de type p:keyStart="0000000000000000" p:keyTypeStart="DES" est une clé PICC par défaut pour une carte Desfire. Avec cette clé la carte reste formatable facilement à l'aide d'un smartphone par exemple. |
<bean id="desfireComueTagEsupSgc" class="org.esupportail.nfctag.beans.DesfireTag" p:formatBeforeWrite="false" p:keyStart="0000000000000000" p:keyTypeStart="DES" p:keyFinish="0000000000000000" p:keyTypeFinish="DES" p:keyVersionFinish="00"> <property name="applications"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireApplication" p:desfireAppId="AB0123" p:amks="0B" p:nok="84"> <property name="files"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireFile" p:fileNumber="00" p:communicationSettings="03" p:accessRights="1223" p:fileSize="1F0000" p:tagWriteApi-ref="idp2sTagWriteEsupSgc"/> </util:list> </property> <property name="keys"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="00" p:keyVer="01" p:key="00000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="01" p:keyVer="01" p:key="00000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="02" p:keyVer="01" p:key="00000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="03" p:keyVer="01" p:key="00000000000000000000000000000000"/> </util:list> </property> </bean> </util:list> </property> </bean> |
L'objet DesfireTag peut contenir une liste de DesfireApplication.
Voici la structure d’une application DesfireApplication:
<bean class="org.esupportail.nfctag.beans.DesfireApplication" p:desfireAppId="AB0123" p:amks="0B" p:nok="84"> <property name="files"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireFile" p:fileNumber="00" p:communicationSettings="03" p:accessRights="1223" p:fileSize="1F0000" p:tagWriteApi-ref="idp2sTagWriteEsupSgc"/> </util:list> </property> <property name="keys"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="00" p:keyVer="01" p:key="00000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="01" p:keyVer="01" p:key="00000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="02" p:keyVer="01" p:key="00000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="03" p:keyVer="01" p:key="00000000000000000000000000000000"/> </util:list> </property> </bean> |
Dans cet exemple, l'application a pour identifiant p:desfireAppId="AB0123", elle est configurée avec p:nok à 84 qui indique 4 clés AES
L'application peut contenir des fichiers de type DesfireFile et des clés DesfireKey
Dans notre cas l'application possède un fichier numéro "00" (p:fileNumber="00")
Le ficher est paramétré avec les autorisations suivantes p:accessRights="1223" :
clé 1 pour la lecture
clé 2 pour l’écriture
clé 2 pour lecture et écriture
clé 3 pour le changement d’autorisations
La clé 0 est la Master Key de l'application, dans l’exemple toutes les clés sont à zéro et insérées en tant que version "01" (p:keyVer="01")
Il n'est plus nécessaire de préciser le type de clé au niveau des beans DesfireKey, celui-ci est déterminé par la valeur de l'attribut p:nok de la DesfireApplication :
L'attribut p:type doit etre supprimé au niveau des clés |
La valeur à écrire dans le fichier est définie par p:tagWriteApi-ref
Il faut configurer l’url qui permet de récupérer cette valeur (ici c'est esup-sgc qui fournit la donnée) :
<bean id="idp2sTagWriteEsupSgc" class="org.esupportail.nfctag.service.api.impl.TagWriteRestWs"> <property name="idFromEppnInitUrl" value="https://esup-sgc-test.univ-rouen.fr/wsrest/nfc/idFromEppnInit"/> </bean> |
<bean id="desfireAuthSiServices" class="org.esupportail.nfctag.service.api.impl.DesfireReadConfig"> <property name="desfireKeyNumber" value="01"/> <property name="desfireFileNumber" value="00"/> <property name="desfireAppId" value="AB0123"/> <property name="desfireAppName" value="si-service"/> <property name="desfireFileOffset" value="000000"/> <property name="desfireKey" value="00000000000000000000000000000000"/> <property name="description" value="Authentification SI Service COMUE"/> </bean> |
L'attribut desfireFileSize n'est plus nécessaire, il doit etre supprimé. |
<bean id="esupSgcVersoExtApi" class="org.esupportail.nfctag.service.api.impl.AppliExtRestWs"> <property name="isTagableUrl" value="https://esup-sgc-test.univ-ville.fr/wsrest/nfc/isTagable"/> <property name="validateTagUrl" value="https://esup-sgc-test.univ-ville.fr/wsrest/nfc/validateTag"/> <property name="getLocationsUrl" value="https://esup-sgc-test.univ-ville.fr/wsrest/nfc/locationsVerso"/> <property name="displayUrl" value="https://esup-sgc-test.univ-ville.fr/wsrest/nfc/verso"/> <property name="description" value="Web Service Verso"/> </bean> |
La nouvelle propriété displayUrl permet de définir l'emplacement des données qui seront affichées suite à la validation d'un tag. Esup-sgc peut retourner le verso en fonction du csn via cette adresse https://esup-sgc-test.univ-ville.fr/wsrest/nfc/verso.