web-dev-qa-db-fra.com

Accès au lecteur SmartCard à partir d'un navigateur Web?

Est-il possible d'accéder à un lecteur SmartCard connecté à un ordinateur à partir d'un navigateur Web en cours d'exécution sur la même machine, c'est-à-dire à partir d'un script ActionScript, JavaScript ou Whatsoe que vous y remplissez?

Par exemple, j'ai lu quelque chose sur le flash.external.ExternalInterface classe dans ActionScript. Peut-il être utilisé pour accéder à un lecteur de carte à puce ou à l'impénétrable de la buffasse?

23
jlnme

Q: Est-il possible d'accéder à SmartCard Reader connecté à un ordinateur à partir d'un navigateur Web en cours d'exécution sur la même machine?

A: Oui, c'est possible. J'ai pu faire cela en utilisant un fichier signé Java Applet. Le Java Applet doit être signé car il nécessitera l'utilisateur d'accorder une autorisation d'accéder aux fichiers système./Matériel (identique à la faite d'une applet d'écrire/édition/supprimer un fichier texte pour vous).

Pourquoi Java? Le lecteur de carte à puce que j'ai utilisé a déjà un Java API, il dispose également d'exemples sur l'accès à celui-ci à l'aide de Java. Mais les exemples sont codés dans Swing. (comme une application de bureau autonome) Ce que j'ai fait est simplement portant le Java code pivotant à l'applet sur un navigateur. J'ai utilisé avec succès cette applet pour créer une connexion et déconnecter sur un site Web/WebApp en nécessitant des cartes à puce, un nom d'utilisateur et un mot de passe. Pretty Secure I dirait.

Le code source? Autant que je voudrais le partager, mais je suis lié à un contrat d'entreprise pour ne pas partager le code. Il suffit de trouver un échantillon d'accès à la carte à puce à l'aide de Java et juste le port sur Applet (pour le Web)

J'espère que ça aide

9
Glenn S

Vous pouvez également consulter ce plugin bêta natif:

https://github.com/ubinity/webpcsc-firebreath

Il s'agit d'un plug-in croiseur/cross-pltaform à base de Firebreath Cadre, exposant un sous-ensemble de l'API PCSC.

5
cslashm

Lorsque cette proposition " cartes à puce dans les navigateurs " est mise en œuvre, nous pourrons également utiliser JavaScript pour cela.

4

J'ai travaillé sur le même circa 2012, puis j'ai travaillé au sommet d'un travail précédent qui a fourni un Java Applet.

De nos jours [décembre 2015], il a encore moins de sens d'utiliser un Java Applet en raison de problèmes de sécurité "récents", et après le renvoi de la prise en charge Java Applets et les technologies du plug-in natives sont également discontinues.

Quelle que soit l'utilité actuelle d'un Java Applet, ramassant la réponse de @glen Allen, je ne suis pas lié par contrat, et voici le code source ouvert d'un exemple d'applet: https://github.com/ist-dsi/signature

Il a été construit sur un travail de thèse et produit des documents dans ce format: http://www.w3.org/tr/xmldsig-core/ Plus d'informations sur le pourquoi peut-on trouver dans l'abstrait de cette thèse MSC https://fenix.tecnico.ulisboa.pt/downloadfile/395139415358/resumo.pdf (L'auteur est un meilleur ingénieur que le rédacteur de thèse, mais cela pourrait être un bon point de commencer Si vous voulez connaître l'état de l'art de la chose, bien que ce soit vieux)

Il y a plus d'exigences que sur le recul et sans savoir avoir apporté des choix étranges de technologies sur le code que je vous donne ici, il suffit de ne pas tenir compte de cette partie :)

Une des réponses ici indiquée sur PKCS_11 et des normes ouvertes. Peut-être que l'astuce réside dans un pilote de lecteur de carte à puce qui configure automatiquement l'infrastructure de certificat du côté client, je me souviens de devoir passer beaucoup de cerceaux cependant pour configurer la carte à puce de ma carte d'identité avec un lecteur sur Mac OS X avec Chrome [Afaik, il n'a pas été facile de configurer le lecteur de carte à puce avec le keyStore d'Apple, et peut-être pas aussi facile à récupérer Chrome configuré pour que ce soit Utilisez l'authentification du client et l'accès demandé à KeyStore d'Apple].

Ou peut-être que le NFC + SmartCard et une application mobile seront la voie à suivre.

Il s'agit simplement d'un tel gaspillage d'avoir des pays entiers avec des identifiants avec des cartes à puce, de nombreux services gouvernementaux déjà avec des webApps et de manière facile à connecter les deux.

À votre santé.

3
João Antunes

Vous pouvez utiliser un fichier Java Applet pour accéder au lecteur. Les applets signés sont autorisés à accéder aux périphériques matériels, le lecteur de carte à puce est accessible via Java Crypto API .

J'espère que cela t'aides.

2
gyimi

Vous ne pouvez pas y parvenir avec ActionScript/Flash si vous devez vous tenir au navigateur.

Adobe Air pourrait faire cela, mais vous devrez alors créer une application que l'utilisateur doit installer avant de l'utiliser.

Quelque chose comme ça (air): http://ceokbooks.adobe.com/post_mass_storage_device_detection_air_2_0-16747.html

0
pkyeck

Si vous pouvez accéder à la carte à puce sur votre système de fichiers, comme lorsqu'un lecteur USB est connecté et apparaît sous forme de disque séparé, vous pouvez simplement utiliser flash.net.FileReference .

0
TheDarkIn1978