Client Certificate Auth - Angular 4-5-6

 ( brokerka | 2018. július 12., csütörtök - 15:03 )

Sziasztok!

Röviden tömören, szeretnék hozzáférni a böngésző certijeihez ellenőrzés céljából
(valószínűleg rosszul keresek googleben), s nem igazán találok rá iránymutatást sem.

A nyelv Javascript lenne, de Angular/Typescript megoldás lenne az igazi, amivel meg kellene oldanom a feladatot.

Dióhélyban van egy Angular6 projekt, felhasználót szeretnék azonosítani, de csak azok számára kellene megjelenjen a login lehetősége, ahol
telepítve van a böngészőben, az általam kiadott certificate.

Ha valaki tud rá valami aranyos npm lib-et, vagy angular modult, vagy csinált már hasonlót bármely webes nyelven, s tudna pár jó tanáccsal szolgálni, megköszönném. :)

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Szerintem client cert auth csak böngésző és HTTPS szerver között létezik, JS-nek semmi köze hozzá.

-

De ezt miért kliens oldalon akarod megoldani?

A böngésző elküldi a kliens certet a webszervernek-nek az SSL handshake során. Ebből aztán a webszerver ki tudja szedni a neki kellő infót és pl küld egy 403-at vagy egy redirektet egy hibaoldalra ha valamilyen paraméter alapján nem felel meg neked a certificate, vagy továbbítja headerben a certificate adatait az alkalmazásnak és az dönt.

A trükk, hogy a SSL handshake során a Client Cert Request-et "optional"-ra kell állítani.

Itt van két példa haproxy-val, amiből látszik a lényeg:

https://www.haproxy.com/blog/ssl-client-certificate-management-at-application-level/

https://raymii.org/s/tutorials/haproxy_client_side_ssl_certificates.html

Köszönöm a segítséget a hozzászólóknak.
Ebból már ki tudok indulni.

Azért kívánok a kliensre certit tenni, amit az app ellenőriz , "legrosszabb eseben" eljuttat a auth request környékén, mert ez a feladat :) ha egyet értek vele, ha nem. sztem egy VPN inkább megfelelőbb lenne, de ez van egyenlőre.
Meg leginkább azért mert az Angular nem szerveroldali, így nem akarnám/nánk a backend felé fordulni, ha már eleve eldönthető, hogy certi hiányában úgyse válaszolnánk rá.

Mégegyszer köszönöm.