You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Chceme pridať podpisovanie cez push notifikácie. Treba na to 3 veci:
Device (inštalácia aplikácie) sa zaregistruje na serveri
Aplikácia sa iba raz za svoj život zaregistruje na serveri - buď pri prvom spustení alebo pri prvom párovaní (čiže v ten istý moment ako sme vymysleli, že user povolí push notifikácie).
Device si vygeneruje ES256 kľúč a ten si bude pamätať po celý život.
Device zistí svoje registrationId - id pre notifikácie na danej platforme.
Device zavolá na server POST /devices s body napr:
{
"platform": "android" / "ios",
"registrationId": "idk32b83ef7-21fe-4120-b8fa-d9f6aba05731",
"displayName": "John's phone (alebo si vymslí hocičo, zatiaľ to nie je podstatné)",
"publicKey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1iPVm0v/ZNM04587g10F54JVIrMZqWnlOXuGjOvcYsuweTYxuXafP8aJ6kIXe+jQhjeldm2mQZzSZ4ceLRq0yA==\n-----END PUBLIC KEY-----"
}
Server vráti v odpovedi guid, ktoré si Device zapamätá do konca života.
Device je úspešne zaregistrovaný.
Device sa spáruje s integráciou
Pri podpisovaní cez extension user naskenuje QR kód / otvorí link. V ňom sa nachádza integration a pushKey.
Device dostal okrem guid a key k dokumentu aj integration a pushKey. Tie 2 si odloží.
Device pripraví header: Authorization: Bearer <api-token>, pričom api-token je JWT token popdísaný ES256 kľúčom, ktorý si vygeneroval pred registráciou, s obsahom:
{
"sub": <device-guid z registrácie>,
"exp": <timestamp now + 5 min>,
"jti": <random UUID 4>
}
Device pošle na server POST /device-integrations s body: { integrationPairingToken : <integration> }.
Server vráti 204 OK.
Device je spárovaný s integráciou.
Device počúva na notifikácie
Ak spárovaná integrácia inicijuje podpisovanie, zároveň so zobrazením QR kódu sa pošlú PUSH notifikácie na spárované zariadenia. Device teda počúva na notifikácie (cez Google / APNS).
Device dostane notifikáciu s payloadom:
{
"encryptedMessage": "..."
}
V encryptedMessage bude raz zašifrovaný string. Nateraz je tam v stringu rovno uložený takýto JSON:
A až keď toto dešifruješ pomocou pushKey, dostaneš ten pôvodný payload. (Na serveri to teraz zapnem bez šifrovania, ale nezdá sa mi to potom v appke byť veľmi zložité rozšifrovať)
Tie JWT tokeny sú potom úpne bežná vec, takže na to určite nájdeš enejakú libku a do funkcie pošleš typ kľúč: ES256, sub: tvoje guid, jti: random uuid, exp: now + 5 min a kľúč na podpísanie: tvoj ES256 kľúč.
Chceme pridať podpisovanie cez push notifikácie. Treba na to 3 veci:
Device (inštalácia aplikácie) sa zaregistruje na serveri
Aplikácia sa iba raz za svoj život zaregistruje na serveri - buď pri prvom spustení alebo pri prvom párovaní (čiže v ten istý moment ako sme vymysleli, že user povolí push notifikácie).
registrationId
- id pre notifikácie na danej platforme.POST /devices
s body napr:Device sa spáruje s integráciou
Pri podpisovaní cez extension user naskenuje QR kód / otvorí link. V ňom sa nachádza
integration
apushKey
.guid
akey
k dokumentu ajintegration
apushKey
. Tie 2 si odloží.Authorization: Bearer <api-token>
, pričomapi-token
je JWT token popdísaný ES256 kľúčom, ktorý si vygeneroval pred registráciou, s obsahom:POST /device-integrations
s body:{ integrationPairingToken : <integration> }
.Device počúva na notifikácie
Ak spárovaná integrácia inicijuje podpisovanie, zároveň so zobrazením QR kódu sa pošlú PUSH notifikácie na spárované zariadenia. Device teda počúva na notifikácie (cez Google / APNS).
V encryptedMessage bude raz zašifrovaný string. Nateraz je tam v stringu rovno uložený takýto JSON:
The text was updated successfully, but these errors were encountered: