Skip to main content

Allkirjastamise teenused SiGa ja SiVa - Info täiendamisel

Parima kasutajakogemuse saamiseks palume kasutada allolevat PDF faili

Allkirjastamise teenused SiGa ja SiVa

SiGa ja SiVa teenus

TEHIK'us on konteinerite allkirjastamise ja allkirjavalideerimise teenusena kasutusel riiklik SiGA ja SiVa teenus. Teenuse kasutamiseks on TEHIK'us loodud vahendus teenus.

Teenuste kasutamiseks peab kasutama TEHIK'u vahendus teenust. See võimaldab tulevikus lihtsamini hallata muudatusi riiklikus teenuses.

Teenuse keskkonnad

Arendus

SiGa: https://siga.arendus.tehik.ee/siga

SiVa: https://siga.arendus.tehik.ee/siva

Test

SiGa: https://siga.test.tehik.ee/siga

SiVa: https://siga.test.tehik.ee/siva

Live

SiGa:

SiVa:

Viited

SiGa riikliku teenuse dokumentatsioon: https://github.com/open-eid/SiGa/wiki

SiGa riikliku teenuse lähtekood: https://github.com/open-eid/SiGa

SiVa riikliku teenuse dokumentatsioon: http://open-eid.github.io/SiVa/

SiVa riikliku teenuse lähtekood: https://github.com/open-eid/SiVa

TEHIK SiGa SiVa vahendusteenuse lähtekood: https://gitlab.sotsiaalministeerium.ee/siga-siva-teenus

KeyCloak teegid: https://www.keycloak.org/docs/latest/securing_apps/

Teenusega liidestamine

Autentimine

SiGa vahendus teenuse kasutamiseks on vajalik luua liidestavale teenusele SSO teenusesse klient teenuste realmi. Teenuse kliendile tuleb määratleda õige skoop. Teenuse autentimine käib JWT identsustõendi abil.

SiVa teenusega liidestamiseks puudub vajadus autentimise järgi.

SSO kasutamine 

Iga päring mis teostatakse SiGa teenuste poole, peab sisaldama JWT tõendit!

Kõige mõistlikum on lahendada JWT tokeni kasutamine SSO platvormi KeyCloak'i poolt loodud teekidega.

Kuna JWT identsustõendil on eluiga, siis peab liidestatav süsteem jälgima identsustõendi kehtivust. Kui kehtivus aeg on läbi, tuleb uuendada tõendit.

Võimalus on selleks kasutada refresh (värskendus) tõendit, millega endale uus access (ligipääsu) tõend hankida. Kuid see samm ei ole kohustuslik ja on lihtsuse mõttes võib olla mõistlikum kohe teostada uus autentimine vaastu SSO teenust.

Sellisel juhul puudub vajadus hallata refresh tõendeid.

Identsustõendi küsimise näide

Enne proxy teenuse väljakutsumist, peab kleint küsima SSO teenusest ligipääsutõendi (access token), kasutades selleks registreerumisel saadud clientId-d ja salasõna (credentails → Secret).

Ligipääsutõendi küsimiseks tuleb teostada Keycloak token päring. 

Näiteks:

curl \

-d "client_id={SSO_CLIENT_ID}" \

-d "client_secret={SSO_CLIENT_SECRET}" \

-d "grant_type=client_credentials" \

"{SSO_URL}/auth/realms/services/protocol/openid-connect/token"

Token meetodi vastuseks saadav JSON-i access_token andmeväljas on esitatud JWT formaadis ligipääsutõend. Ligipääsutõend sisaldab järgmisi olulisi andmevälju:

  • exp - token-i eluiga
  • sub - kasutaja süsteemne ID
  • realm_access.roles või resource_access.account.roles - peab sisaldama rolli "siga_siva_proxy_client"
  • clientId - kliendi ID

Proxy teenuse päringu teostamine

Saadud ligipääsutõendi väärtus tuleb iga järgneva proxy päringuga edastada HTTP Authorization päise atribuudina. Näiteks:

Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA....

Ligipääsutõendi aegumine

Enne ligipääsutõendi kasutamist tuleb veenduda, et see ei ole aegunud. Tõendi aegumise aeg on määratu JWT exp andmeväljas.

Kui tõend on aegunud, siis tuleb SSO teenuselt küsida uus tõend, kasutades selleks uuesti /token päringut.

REST teenuse kasutamine

SiGa

SiGa API detailne kirjeldus: https://github.com/open-eid/SiGa/wiki/Hashcode-API-description

Arvestama peab, et erisus on autentimises ja SiGa vahendusteenuse poole pöördudes peab andma kaasa valiidse TEHIK'u SSO identsustõendi.

Proxy teenus võimaldab ligipääsu järgmistele meetoditele:

POST [server url]/siga/hashcodecontainers

POST [server url]/siga/upload/hashcodecontainers

POST [server url]/siga/hashcodecontainers/{containerId}

GET [server url]/siga/hashcodecontainers/{containerId}/datafiles

POST [server url]/siga/hashcodecontainers/{containerId}/datafiles

DELETE [server url]/siga/hashcodecontainers/{containerId}/datafiles/{datafileName}

POST [server url]/siga/hashcodecontainers/{containerId}/remotesigning<br>

PUT [server url]/siga/hashcodecontainers/{containerId}/remotesigning/{signatureId}

POST [server url]/siga/hashcodecontainers/{containerId}/mobileidsigning

GET [server url]/siga/hashcodecontainers/{containerId}/mobileidsigning/{signatureId}/status

POST [server url]/siga/hashcodecontainers/{containerId}/smartidsigning

GET [server url]/siga/hashcodecontainers/{containerId}/smartidsigning/{signatureId}/status

GET [server url]/siga/hashcodecontainers/{containerId}/signatures

GET [server url]/siga/hashcodecontainers/{containerId}/signatures/{signatureId}

GET [server url]/siga/hashcodecontainers/{containerId}/validationreport

POST [server url]/siga/hashcodecontainers/validationreport

GET [server url]/siga/hashcodecontainers/{containerId}

DELETE [server url]/siga/hashcodecontainers/{containerId}

POST [server url]/siga/containers

POST [server url]/siga/containers/{containerId}/datafiles

GET [server url]/siga/containers/{containerId}/datafiles

DELETE [server url]/siga/containers/{containerId}/datafiles/{datafileName}

POST [server url]/siga/containers/{containerId}/remotesigning

PUT [server url]/siga/containers/{containerId}/remotesigning/{signatureId}

POST [server url]/siga/containers/{containerId}/mobileidsigning

GET [server url]/siga/containers/{containerId}/mobileidsigning/{signatureId}/status

POST [server url]/siga/containers/{containerId}/smartidsigning

GET [server url]/siga/containers/{containerId}/smartidsigning/{signatureId}/status

GET [server url]/siga/containers/{containerId}/signatures

GET [server url]/siga/containers/{containerId}/signatures/{signatureId}

GET [server url]/siga/containers/{containerId}/validationreport

POST [server url]/siga/containers/validationreport

GET [server url]/siga/containers/{containerId}

DELETE [server url]/siga/containers/{containerId}

SiVa

SiVa teenuse API detailne kirjeldus: http://open-eid.github.io/SiVa/siva3/interfaces/

Proxy teenus võimaldab ligipääsu järgmistele teenustele:

SiVa REST API

POST [server url]/siva/validate

POST [server url]/siva/validateHashcode

POST [server url]/siva/getDataFiles

SiVa SOAP API

POST [server url]/siva/soap/validationWebService

POST [server url]/siva/soap/hashcodeValidationWebService

POST [server url]/siva/soap/dataFilesWebService/getDocumentDataFiles

SOAP/XML

NB: Teame et üks kindel muudatus tuleb. MID allkirjastamisel tuleb anda teenusesse kaasa lisaks mobiilinumbrile ka isikukood. Isikukood oli eelnevalt vabatahtlik!

SOAP teenus on planeerimisel. Kui õnnestub, siis loome DigiDocService'le 1:1 teenuse, et võimaldada sujuvamat üleminekut.

1:1'le loodavas SOAP teenuses kaetakse ainult allkirjastamisega seotud teenused. MID autentimiseks tuleb kasutada TEHIK'u SSO teenust.