1. Solis: Izveidot parakstīšanas identitāti (credential)

Lai izveidotu kvalificētu elektronisko parakstu, vispirms ir jāizveido īstermiņa parakstīšanas identitāte (credential).

Parakstīšanas identitāte tiek izveidota pēc veiksmīgas lietotāja autentifikācijas un autorizācijas.
Procesa rezultātā tiek iegūts:

  • piekļuves marķieris (access_token);
  • parakstīšanas identifikators (credentialID).

Procesa pārskats

flowchart TD
A[PKCE sagatavošana]
B[PAR pieprasījums]
C[Lietotāja autentifikācija]
D[Autorizācijas kods]
E[Access Token + Credential ID]
 
A --> B
B --> C
C --> D
D --> E

PKCE sagatavošana

Pirms autorizācijas pieprasījuma nosūtīšanas jāģenerē PKCE parametri.
 
Tiek izveidots nejaušs code_verifier, no kura tiek aprēķināts code_challenge.
 
Parakstīšanas identitātes izveides laikā jāizmanto:

code_challenge = BASE64URL_NO_PADDING(SHA-256(ASCII(code_verifier)))
code_challenge_method=S256

 

Svarīgi! code_verifier jāsaglabā līdz autorizācijas koda apmaiņai pret marķieri (tokenu).
 Ja tas tiek pārrakstīts vai nesakrīt ar PAR pieprasījumā izmantoto challenge, tokena galapunkts atgriež invalid_grant /
invalidCodeVerifier.

PAR pieprasījums

Izsaukums reģistrē serverī OAuth autorizācijas pieprasījumu jauna īstermiņa parakstīšanas identitātes iegūšanai. Atbildē tiek saņemts request_uri, kuru izmanto pārlūka autorizācijā. Parakstīšanas identitātes izveide tiek uzsākta ar Iepriekš reģistrēts autorizācijas pieprasījum (Pushed Authorization Request jeb PAR).

Galapunkts (Endpoint)
POST {{csc_base_url}}/oauth2/pushed_authorize
Authorization: Basic BASE64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded
response_type=code
client_id={{client_id}}
redirect_uri={{redirect_uri}}
scope=credential
state={{oauth_state}}
signatureQualifier={{signature_qualifier}}
acr_values={{acr_values}}
code_challenge_method=S256
code_challenge={{code_challenge}}

 

Ieejas parametri

ParametrsAtrašanās vietaObligātsTips/formātsApraksts
AuthorizationGalvene (Header)JāHTTP BasicOAuth klienta autentifikācija: Base64 no UTF-8 client_id:client_secret.
ContentTypeGalvene (Header)JāVirkne (String)application/x-www-form-urlencoded.
response_typeVeidlapas parametri (Form)JāVirkne (String)Statiska vērtība code.
client_idVeidlapas parametri (Form)JāVirkne (String)Tas pats client_id, ko izmanto Basic autentifikācijā
redirect_uriVeidlapas parametri (Form)JāURIIepriekš reģistrēts callback URL
scopeVeidlapas parametri (Form)JāVirkne (String)Statiska vērtība credential
stateVeidlapas parametri (Form)JāVirkne (String), ieteicams nejaušsKorelācijas un CSRF aizsardzības vērtība
signatureQualifierVeidlapas parametri (Form)JāVirkne (String)Statiska vērtība eu_eidas_qes
acr_valuesVeidlapas parametri (Form)IeteicamsVirkne (String)Ierobežo lietotājam piedāvātās autentifikācijas plūsmas. Šim pakalpojumam norāda eID kartes un/vai eID Scan plūsmu. Vairākas vērtības atdala ar vertikālo svītru | (URL kodējumā %7C).
code_challenge_methodVeidlapas parametri (Form)JāVirkne (String)Statiska vērtība S256.
code_challengeVeidlapas parametri (Form)JāBase64URL bez paddingSHA-256 no konkrētā ģenerētā code_verifier.

Atbastītās acr_values vērtības

Lietotāja plūsmaacr_values vērtībaApraksts
eID karte datorāurn:eparaksts:authentication:flow:sc_pluginAutentifikācija ar fizisku eID karti, karšu lasītāju un viedkartes/eID programmatūru
eID Scanurn:eparaksts:authentication:flow:mobile-eideID Scan plūsma mobilajā ierīcē

ℹ️

Piezīme

Parametrs acr_values nosaka, kuras autentifikācijas plūsmas lietotājam tiks piedāvātas autorizācijas laikā. Var norādīt vienu vai abus atbalstītos autentifikācijas veidus.

Atbildes piemērs:

{
"request_uri": "urn:ietf:params:oauth:request_uri:5a56e939-12e9-43be-8d3a-10491841edc3",
"expires_in": 60
}
ParametrsTipsAprakstsIntegratora darbība
request_uriVirkne (String)PAR pieprasījuma vienreizēja atsauceSaglabāt un URL kodēt, veidojot authorize_url
expires_inSkaitlis (Number)request_uri derīguma laiks sekundēsAutorizācija jāuzsāk pirms termiņa beigām

authorize_url veido šādi:

{{csc_base_url}}/oauth2/authorize
?client_id={{client_id}}
&request_uri=<URL-encoded request_uri>

Lietotāja autorizācija

authorize_url atver lietotāja pārlūkā, lai EIDAS platforma autentificētu lietotāju un apstiprinātu
credential izveidi.
PAR pieprasījumā norādītais acr_values nosaka, kura autentifikācijas plūsma lietotājam tiek
piedāvāta. Ja norādītas abas pakalpojumam paredzētās plūsmas, lietotājs var izvēlēties eID
karti datorā vai eID Scan. Ja norādīta viena plūsma, autorizācijas serveris lietotāju novirza uz
konkrēto autentifikācijas scenāriju.

Pāradresācijas (Callback) parametri

Pēc veiksmīgas autorizācijas platforma novirza pārlūku uz redirect_uri ar pāradresācijas parametriem.

ParametrsNosacījumsAprakstsIntegratora darbība
codeVeiksmīga autorizācijaVienreiz lietojams autorizācijas kodsSaglabāt īslaicīgi un nekavējoties apmainīt pret tokenu
stateJa nosūtīts pieprasījumāSākotnējā state vērtībaObligāti salīdzināt ar saglabāto PAR pieprasījumā iekļauto state vērtību
errorNeveiksmīga autorizācijaOAuth kļūdas kodsTokena apmaiņu neveikt
error_descriptionNeveiksmīga autorizācijaKļūdas skaidrojumsAttēlot kļūdas paziņojumu

Autorizācijas koda apmaiņa

Izsaukums apmaina pārlūka pāradresācijas (callback) saņemto authorization_code un tam atbilstošo PKCE
code_verifier pret īslaicīgu piekļuves marķieri (Bearer token) un credentialID.
 

HTTP pieprasījums

POST {{csc_base_url}}/oauth2/token
Authorization: Basic BASE64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
client_id={{client_id}}
code={{authorization_code}}
redirect_uri={{redirect_uri}}
code_verifier={{code_verifier}}

 Ieejas parametri:

ParametrsAtrašanās vietaObligātsTips/formātsApraksts
AuthorizationGalvene (Header)JāHTTP BasicOAuth klienta identifikators un noslēpums
Content-TypeGalvene (Header)JāVirkne (String)application/x-www-form-urlencoded
grant_typeVeidlapas parametri (Form)JāVirkne (String)Statiska vērtība authorization_code
client_idVeidlapas parametri (Form)JāVirkne (String)OAuth klienta identifikators
codeVeidlapas parametri (Form)JāVirkne (String)Pāradresācijas (Callback) saņemtais vienreiz lietojamais kods
redirect_uriVeidlapas parametri (Form)JāURITā pati vērtība, kas tika izmantota atbilstošajā credential PAR pieprasījumā
code_verifierVeidlapas parametri (Form)Jā43–128 PKCE rakstzīmesTā pati code_verifier vērtība, no kuras tika aprēķināts PAR pieprasījumā code_challenge

Atbildes piemērs:

{
"access_token": "<access_token>",
"token_type": "Bearer",
"expires_in": 120,
"authorization_details": [
{
"type": "sign_identity_registration",
"group_labels": [
"urn:csc:signatureQualifier:eu_eidas_qes"
]
}
],
"credentialID": "<credential_id>"
}

Atbildes parametri:

ParametrsTipsAprakstsIntegratora darbība
access_tokenVirkne (String)Īslaicīgs piekļuves marķieris (Bearer token)Glabāt tikai atmiņā vai aizsargātā īslaicīgā glabātuvē; izmantot credentials/info
token_typeVirkne (String)Tokena tipsPārbaudīt, ka vērtība ir Bearer
expires_inSkaitlis (Number)Tokena derīguma laiks sekundēsIzsaukumi, izmantojot tokenu, jāveic pirms termiņa beigām
authorization_detailsMasīvs (Array)Piešķirtās autorizācijas kontekstsPārbaudīt sagaidīto sign_identity_registration un qualifier grupu
credentialIDVirkne (String)Jaunā īstermiņa credential identifikatorsSaglabāt kā credential_id turpmākajiem izsaukumiem

Did this page help you?