Komunikace se čtečkou karet z webu

PanVP

Komunikace se čtečkou karet z webu
« kdy: 17. 09. 2021, 12:23:58 »
Ahoj,

mám (intranetovou) webovou stránku a potřebuji komunikovat se čtečkou čipových karet (občanek) v počítači.

Jak to děláte?
Addon do prohlížeče nechci.

Není problém na dané klienty nainstalovat obslužný software.
Napadlo mě, že by můj obslužný software v sobě měl i komponentu "prohlížeč internetu", že by to mohlo být nejsnazší.

Nebo udělat webový server běžící na daném počítači a webová stránka by přistupovala na něj  ::)

Nějaké nápady?


Re:Komunikace se čtečkou karet z webu
« Odpověď #1 kdy: 17. 09. 2021, 13:14:51 »
Tohle jste četl? Je to, pravda, trochu starší čtení - čtěte kdyžtak od konce (nejmladší odpovědi ve vlákně).

Re:Komunikace se čtečkou karet z webu
« Odpověď #2 kdy: 17. 09. 2021, 13:23:50 »
Připravuje se do prohlížečů USB API, některé prohlížeče už ho podporují.

Předpokládám, že vy ale nechcete komunikovat se čtečkou karet, nýbrž chcete využívat certifikáty a privátní klíče uložené v čipu občanky, např. pro vytvoření elektronického podpisu. V tom případě se potřebujete napojit na systémové API pro práci s certifikáty – např. ve Windows na Microsoft CryptoAPI. Pro to zatím API v prohlížečích není, i když je už spoustu let v plánu.

Řešíme to tak, že na počítači je obslužná aplikace, která řeší tu kryptografickou část a komunikuje přes WebSocket se serverem. A v prohlížeči je normální webová aplikace, která také přes WebSocket komunikuje se serverem. Server tudíž jenom předává ty WebSocketové zprávy mezi prohlížečem a obslužnou aplikací. Ten server by tam teoreticky nebyl potřeba, pokud jste v prostředí, kde si můžete nadiktovat podmínky – ta obslužná aplikace pak může vystavit lokální webserver a prohlížeč může komunikovat rovnou s ní.

PanVP

Re:Komunikace se čtečkou karet z webu
« Odpověď #3 kdy: 17. 09. 2021, 18:23:38 »
Hrozně moc se bojím spoléhat se na API prohlížeče nebo hůř, na plugin. :(
Tyhle věci se pořád mění, než stihnu něco zajímavého použít, je to považováno za zastaralé/nebezpečné, označené jako "This API is part of the deprecated Chrome Apps platform. Learn more about migrating your app."  :(

Nejmenší zlo asi je mít vlastní aplikaci, které komunikuje se čtečkou a zobrazuje nějakou webovou stránku.
(Tj. uvnitř aplikace běží jádro prohlížeče.)
Tak mi to "teď" připadá.
Nebo se pletu  :(  ???



borekz

  • ****
  • 492
    • Zobrazit profil
    • E-mail
Re:Komunikace se čtečkou karet z webu
« Odpověď #4 kdy: 17. 09. 2021, 18:42:22 »
Kdysi dávno jsem přístup na HW klienta řešil přes Active-X. Nechápu moc smysl toho lokálního webserveru. Ten pak bude chodit na služby hlavního webserveru nebo to celé může běžet lokálně ? Pokud platí druhý případ, proč to musí být přes web a ne jako normální aplikace ?


RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Komunikace se čtečkou karet z webu
« Odpověď #5 kdy: 17. 09. 2021, 19:52:27 »
Nejmenší zlo asi je mít vlastní aplikaci, které komunikuje se čtečkou a zobrazuje nějakou webovou stránku.
(Tj. uvnitř aplikace běží jádro prohlížeče.)

Pokud to ma byt webova aplikace, tak ji tak napis - a pro cast komunikace se cteckou pouzij cross-domain ajax, ktery bude pristupovat na "server" bezici na localhostu, kde bude pak nativni kod - tvoje vlastni API prelozeno na komunikaci se cteckou skrze dodavatelske knihovny, nebo API OS.

Ale tohle zrejme sezene prave ve forme pluginu do prohlizece - tak nevim zda ma smysl si to komplikovat.

Re:Komunikace se čtečkou karet z webu
« Odpověď #6 kdy: 19. 09. 2021, 21:16:21 »
Nejmenší zlo asi je mít vlastní aplikaci, které komunikuje se čtečkou a zobrazuje nějakou webovou stránku.
(Tj. uvnitř aplikace běží jádro prohlížeče.)
Tak mi to "teď" připadá.
Nebo se pletu  :(  ???
To ovšem budete muset to jádro prohlížeče v aplikaci neustále aktualizovat, aby v něm nebyly bezpečnostní chyby. Připadá mi zbytečné tahat do aplikace jádro prohlížeče, když jenom potřebujete v prohlížeči něco zobrazit. Jednodušší je standalone prohlížeči jenom poskytnout z té aplikace data – buď přímo (že ta aplikace bude zároveň web serverem), nebo nepřímo (aplikace data pošle web serveru, který je pošle prohlížeči).

PanVP

Re:Komunikace se čtečkou karet z webu
« Odpověď #7 kdy: 19. 09. 2021, 23:12:44 »
Ta webová aplikace už je hotová a certifikovaná, velmi nerad bych do ní zasahoval.
Ano, lokální webový server nabízející data je řešení...ale zase to musí běžet jako servis, aby to fungovalo všem, co na těch počítačích pracují.

Přemýšlím, jestli mi vadí, že by v aplikaci bylo starší jádro.
Možná ani ne (???), protože tuto konkrétní aplikaci bude používat jeden zákazník jen vůči jedné interní aplikaci.
Když si spustí normální prohlížeč internetu, tak nepolezou přes to moje jádro ne?
Jinými slovy, potenciální nebezpečí je jediné - pokud by někdo zaviroval tu interní aplikaci, tak může provést exploit na koncových stanicích.

Tou "spešl" aplikací bych se vyhnul celé šaškárně s výrobou servisu, nehledě na to, že Windows Služba by se měla taky nějak chovat. Tj. nějak rozumně reagovat na povely systému, zapisovat do logu... U aplikace by se to obešlo i bez instalátoru, aktualizace jednoduše při spuštění. Přijde mi, že jediná výhoda webserveru je v tom, že s tím může komunikovat i několik běžících instancí webové stránky, víc aplikací si oproti tomu se čtečou nepokecá.  ::)

Otázka: Jaké bezpečnostní riziko je, když aplikace obsahuje staré a zranitelné jádro prohlížeče a připojuje se na jeden konkrétní server na jednu jedinou aplikaci. Myslím si, no a mohu se plést, že jediný vektor útoku je z toho serveru, na který se to připojuje. Jinak ne...
« Poslední změna: 19. 09. 2021, 23:16:38 od PanVP »

PanVP

Re:Komunikace se čtečkou karet z webu
« Odpověď #8 kdy: 19. 09. 2021, 23:21:20 »
Asi bych dokázal napsat rozšíření pro Chrome, které umí to, co chci.
Jenže se bojím toho, že se jádro Chrome jednoho krásného dne aktualizuje, rozšíření VŠEM přestane fungovat a začne řev = což je přesně to, co nechci. Už jsem se takhle s rozšířeními 2x spálil, vždy jsem si hrozně nabil ústa.

Re:Komunikace se čtečkou karet z webu
« Odpověď #9 kdy: 20. 09. 2021, 09:47:52 »
Ta vaše aplikace obsahuje jenom obsah, kterému můžete 100% věřit? Nestahuje externí skripty, styly, obrázky, fonty? Nemohou tam uživatelé nahrávat vlastní obsah? Nedokáže ji nikdo přes DNS přesměrovat jinam? Nebude ověřovat HTTPS certifikáty? Nebudou tam žádné odkazy na externí weby?

Z uživatelského hlediska tam uživatelé nebudou chtít používat záložky, taby, nebudou chtít tisknout? To všechno byste totiž musel naimplementovat.

Pokud nechcete dělat rozšíření do prohlížeče, protože máte špatnou zkušenost s aktualizacemi prohlížeče, připadá mi použití embeddovaného jádra prohlížeče jako z deště pod okap.

Ohledně způsobu implementace toho serveru – aplikaci můžete nastartovat i z prohlížeče, akorát to uživatel musí tlačítkem potvrdit. Takže pokud uživatelům nebude vadit, že musí při prvním použití karty v rámci přihlášení k Windows odkliknout spuštění, není služba potřeba. Osobně bych se spíš snažil službě vyhnout – běžná služba ve Windows nemá přístup k sezení aktuálně přihlášeného uživatele, takže by se např. nezobrazil dialog pro zadání PINu k certifikátu.

PanVP

Re:Komunikace se čtečkou karet z webu
« Odpověď #10 kdy: 20. 09. 2021, 11:19:40 »

Ano, to je všechno kompetentní, pravdivé a vaše znalosti v této oblasti jsou rozhodně obohacující, jako odborníka na web si vás velmi vážím.

Jen pořád nevím, jak to vyřešit u sebe. Ani do jedné možnosti se mi vlastně nechce.

oss

  • ***
  • 229
    • Zobrazit profil
    • E-mail
Re:Komunikace se čtečkou karet z webu
« Odpověď #11 kdy: 24. 09. 2021, 10:40:02 »