Bonsoir Quentin,
Indépendemment de la technologie utilisée côté serveur, il faut
forcémment du code côté client pour lire
la carte eID: Les browser n'exposent pas (encore?) l'accès PCSC aux
pages web/javascript.
Cela dit: Il existe des moyens (livrés dans le MiddleWare eID) qui
permettent au browser d'accédér aux fonctions
signature de la carte. Cela permet de monter une session Mutual SSL avec
un serveur https configuré pour cela.
(comme tax-on-web)
Tu pourrait opérer ainsi: Le serveur HTTPS configuré pour accepter les
certificats signés par un des Belgian Root CA,
soite mettre des règles dans le serveur HTTPS pour limiter a certaines
personnes, soit lire le DN du certificat
(disponible en variables d'environnement) a partir de ton code PHP et
décider ainsi authentication et authorisation:
Si le certificat présenté est signé correctement, et n'est pas revoqué
(utiliser serveur OCSP), le DN sera bien celui
du citoyen en question, en le fait que le browser ai pu signer avec la
clef privée du citoyen signifie que celui-ci
a entré son code PIN correctement.
Moi, par exemple, je fait ainsi dans une certaine application de test
(extrait config apache httpd)
# faire confiance a ce qui est signé par un des BRCA
SSLCACertificateFile "/etc/httpd/conf/ssl/belgianroots.pem"
# verifier la chaine (auth, citizen CA, BRCA)
SSLVerifyDepth 4
# mettre a disposition les paramètres de la connection SSL
SSLOptions +StdEnvVars
# suggérer, mais pas insister sur une connection Mutual SSL (ainsi, les
clients sans eID peuvent accédér la page,
# mais les variables indiqueront que la session n'est pas "Verified" et
les données comme DN seront vides.
# te permettant de former un message plus poli que l'erreur cryptique du
browser.)
SSLVerifyClient optional
# passer les variables qui m'intéressent en forme de Header HTTP
(j'utilise une application HTTP en mode ProxyPass)
# pour toi, voir doc PHP comment accéder a ceux-ci.
RequestHeader set Verified "%{SSL_CLIENT_VERIFY}s"
RequestHeader set DN "%{SSL_CLIENT_S_DN}s"
Dépendent de tes besoin et risques, il serait une bonne idée d'enabler
la recherche OCSP dans ton serveur pour
refuser les cartes perdues en volées.
Autre utilisation, comme par example lire les fichiers "identité" et/ou
"addresse" requièrent le deployement de code
côté client. Il existe, par exemple, une Applet Java qui fait cela (et
bien d'autre choses). Faut voir si cela est acceptable
pour ton application (tes utilisateurs devraient avoir Java installé et
admettre l'execution d'Applet. Ton Applet devra être
signé avec un codesigning certificate).
https://code.google.com/p/eid-applet/
Tu pourrais écrir ton Applet propre, par example en utilisant la lib
commons-eid:
https://code.google.com/p/commons-eid
public void eIDCardInserted(CardTerminal terminal,BeIDCard card)
{
try
{
this.clearText();
this.identity=TlvParser.parse(card.readFile(FileType.Identity),
Identity.class);
String
firstName=this.identity.getFirstName().split(" ")[0];
addText("Ha, kijk eens daar.." +
((this.identity.getGender().equals(Gender.MALE))?"Onze ":"Ons ") +
firstName + " zie!");
this.address =
TlvParser.parse(card.readFile(FileType.Address), Address.class);
int
yob=this.identity.getDateOfBirth().get(Calendar.YEAR);
int age=(new
GregorianCalendar()).get(Calendar.YEAR)-yob;
addText("Alle da'k u op uw " + age + "ste pas
terugzie!");
Thread.sleep(1000);
addText("T'is toch straf! Hoe lang is dat niet
geleden zeg!");
Thread.sleep(1000);
addText("Hoe is't nog in " +
address.getMunicipality() + "?");
}
catch(CardException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void eIDCardRemoved(CardTerminal terminal,BeIDCard card)
{
addText("Sa-luuu!");
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
clearText();
}
Dépendant de tes besoins, risques et investissements, il y a peut-être
raison de deployer une instance du Trust Service:
https://code.google.com/p/eid-trust-service/
.. et d'y acceder en XKMS2..
Quoi que tu fasse.. fait attention de toujours suivre/consulter la
commission sur la vie privé!
http://www.privacycommission.be/fr
Sinceres,
-f
> --
> You received this message because you are subscribed to the Google
> Groups "eID Middleware Dev" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to
eid-middleware-...@googlegroups.com.
> For more options, visit
https://groups.google.com/groups/opt_out.