Lai autentificētu fiziskās personas un juridiskās personas, DAGR portāls izmanto vienotās pieteikšanās moduli:
Savukārt lietotāju autorizācijai DAGR portāls izmanto reģistrēto datu devēju un datu ņēmēju pieteikumus:
Datu devējiem priekš datu nodošanas uz DAGR un datu ņēmējiem priekš datu nolasīšanas no DAGR ir jāizmanto tehniskie savienojumi. Ja datu devējs vai datu ņēmējs DAGR izmanto vairākās savās informācijas sistēmās, katrai informācijas sistēmai rekomendējams definēt savu savienojumu. Tehniskos savienojumus var reģistrēt DAGR pašapkalpošanās portālā sadaļā "Savienotāji". Šajā sadaļā ir pieejams saraksts ar visiem savienotājiem / savienojumiem:
DAGR portālā un citur dokumentācijā tiek izmantoti divi līdzīgi termini - "savienojums" un "savienotājs". Atšķirība ir tāda, ka savienojums ir noteiktam datu devējam vai datu ņēmējam piesaistīti pieslēguma rekvizīti, savukārt savienotājs ir DAGR projekta ietvaros izstrādāta JAVA aplikācija priekš datu devējiem, kas DAGR-im pieslēdzas ar noteiktiem pieslēguma rekvizītiem jeb savienojumu.
Lai reģistrētu jaunu savienojumu, jāaizpilda forma:
Šajā formā jānorāda savienotāja nosaukums (nosaukumam ir tikai informatīva nozīme), identifikators (dēvēts arī par client_id), savienotāja tips (consumer priekš datu ņēmējiem vai producer priekš datu devējiem), drošības talona dzīves laiks sekundēs un opcionāls apraksts.
Kad savienojums ir saglabāts, tam iespējams pievienot X.509 standarta drošības sertifikātu:
DAGR savienojumiem pievienotos sertifikātus izmanto, lai validētu drošības talonu pieprasījums. DAGR savienojumam pievienotais x509 sertifikāts var būt arī pašparakstīts. Pastāv vairāki varianti, kā iegūt pašparakstītu X.509 sertifikātu. MS Windows vidē to var izdarīt, uzinstalējot openssl komandrīku un izpildot komandas:
openssl genrsa -out c:\temp\nosaukums.key 2048
Šī komanda ģenerē privāto atslēgu, kas pēc tam būs nepieciešama, lai parakstītu drošības talona pieprasījumu. Privātā atslēga paliek pie datu patērētāja un tās aizsargāšana ir datu patērētāja pienākums.
openssl req -key c:\temp\nosaukums.key -new -x509 -subj "/C=LV/ST=Riga/L=Riga/O=Iestades_nosaukums/OU=IT/CN=nosaukums" -days 365 -out c:\temp\nosaukums.crt
Šī komanda ģenerē pašparakstītu X.509 sertifikātu, kuru jāpievieno DAGR reģistrētajam datu patērētāja savienotājam.
Privātās atslēgas piemērs: bss_demo.key
Saistītā sertifikāta piemērs: bss_demo.cer
Tehniskie pieslēgumi jeb datu devēju savienojumi un datu patērētāju savienojumi tiek autentificēti un autorizēti saskaņā ar OAuth 2.0 OpenId Connect standarta Client Credentials Flow plūsmu.
Lai izmantotu DAGR REST API servisus, vispirms ir jāpieprasa un jāiegūst JWT drošības talons. Drošības talona pieprasīšanas adrese:
Drošības talona izsaukuma piemērs:
curl --location 'https://parvaldiba-test.dagr.gov.lv/Identities.STS/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cache-Control: no-cache' \
--data-urlencode 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer' \
--data-urlencode 'client_assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJUU1RfVlJBQV8xIiwianRpIjoiODM3MGJmOTEtM2VmNS00YjgyLWJkMzQtNjk3YjM0MjVmZWJkIiwiaXNzIjoiVFNUX1ZSQUFfMSIsImF1ZCI6InVybjpURVNULUxOQjpEQUdSLlNUUy9jb25uZWN0L3Rva2VuIiwiZXhwIjoiMTczMTA3NzQ1OCIsIm5iZiI6IjE3MzEwNzM4NTgifQ.IGDExzaEgx0RGg_nuQPailEqjVbFZELzn-oDE9d97sgu_XR-cHVjoMO7Y4iftD-k9uEI26BRUy4PlGGGxxUaM_QvLPyngyQaxhGZbiKvkUjgUDfTuNyCqXe0HiCDR2HuX3CPzTfOpb0KR0SF2LY5DpEPM67RNe9gI_27-1QezlGG1yvOete9biY2qkUvvTsmF2HRsVUVqGxcIdprFfZsyeBOFgZcnkuzejkBOH43IILmY5SXDuGm-X9UKYKg5RAyODL1Xbz3pp4UQ8Bn2ybIYNwmW-1BRQvf2rfPqdNMLBKrRMlS2ajw6o_sz4IAA_XZe1vdV2655nLLLfW7BfzgDA' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=TST_VRAA_1' \
--data-urlencode 'scope=consumer'
Šajā izsaukumā client_id
ir jānorāda savienojuma identifikators, grant_type
un client_assertion_type
ir jānorāda tādi kā redzami piemērā, scope
ir jānorāda consumer (datu ņēmēja savienojumam) vai producer (datu devēja savienojumam), savukārt client_assertion
ir jāsagatavo atbilstoši RFC 7519 JSON Web Token (JWT) standartam un jāparaksta atbilstoši RFC 7515 JSON Web Signature(JWS). Respektīvi, client_assertion
sastāv no 'Header'
un 'Payload'
, kas parakstīti ar savienojuma privāto atslēgu.
‘Header’
veidojams kā JSON objekts, kas satur paraksta parametrus, piemēram:
{
"typ" : "JWT",
"alg" : "RS256"
}
'Payload'
ir iekļaujama šāda informācija (testa videi):
{
"sub": {savienojuma identifikators jeb client_id},
"jti": {uuid},
"iss": {savienojuma identifikators jeb client_id},
"aud": urn:TEST-LNB:DAGR.STS/connect/token,
"exp": {derīguma termiņš, max nbf + 1 stunda},
"nbf": {parakstīšanas datums un laiks}
}
Parametrā "aud" ir jānorāda vērtība urn:TEST-LNB:DAGR.STS/connect/token
testa videi un vērtība urn:LNB:DAGR.STS/resources
produkcijas videi.
Drošības talona izsaukuma atbildes piemērs:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJ1cm46VEVTVC1MTkI6REFHUi5TVFMiLCJzdWIiOiJWYWxzdHMgcmXEo2lvbsSBbMSBcyBhdHTEq3N0xKtiYXMgYcSjZW50xatyYSIsImF1ZCI6WyJjb25zdW1lciIsInVybjpURVNULUxOQjpEQUdSLlNUUy9yZXNvdXJjZXMiXSwiZXhwIjoxNzMxMDc0NjA3LCJuYmYiOjE3MzEwNzQwMDcsImlhdCI6MTczMTA3NDAwNywiaXp6aV9pZXN0IjpmYWxzZSwibGVnYWxlbnRpdHkiOiI5MDAwMTczMzY5NyIsImNsaWVudF9pZCI6IlRTVF9WUkFBXzEiLCJzY29wZSI6WyJjb25zdW1lciJdfQ.lO4GmcEOAVaSeicjklj3N1Rw87Irkz65-lUeXDVdYVDbQXgCydlFIOnpt2jFN913gBgnFdC_Ow4pl7clz0wq8F4RLZ-aNLAuaHa2BKViNqH1eCXXFk1lUF7fybIkxhkuibY600z6szoZH1LSRkaH8hi6SGRiJZbUjfl9awi2ubAHiQWwWdd_jFeQfgjkJqKcF4KalZvNv-efGIQr-XRdLcBAPW4fdeIFF3qk7hpO0yORIzulKYoFm1lbxOdr3Wi0MKKWc7OHKbAZo4O_R_J7Te7ABT3vCHqDVi74cBEyBeLJgWGBILhY-psVEX-q55BwKFgbUuRjwKVQ-IsppgaFDQ",
"expires_in": 600,
"token_type": "Bearer",
"scope": "consumer"
}
Izsniegtais drošības talons atbilst RFC 7519 standartam un drošības talona satura pārlūkošanai ērti izmantot: https://jwt.io/
Postman piemērs drošības talona izsaukumam un datu izguves izsaukumiem pieejams: https://api.postman.com/collections/9631194-e7289644-5aa8-4639-8d4f-80c8591f2a49?access_key=PMAT-01GPE6A92NR3T5PNH5MTB9KMWD
Lai Postman programmā ielādētu kolekciju, jāizvēlas darbība “File” -> “Import” un jāiekopē augstākminētajā adresē pieejamais teksts. Lai varētu izpildīt drošības talona pieprasīšanas piemēru, Postman programmā ir jāpievieno un jāaktivizē mainīgo vide (environment). Instrukcija, kā izveidot un pārvaldīt mainīgo vides, pieejama Postman ražotāja mājas lapā: https://learning.postman.com/docs/sending-requests/variables/managing-environments