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āiizmantoto 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 Pushed Authorization Request (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, kartes 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.

Callback parametri

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

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

Autorizācijas koda apmaiņa

Izsaukums apmaina pārlūka callback saņemto authorization_code un tam atbilstošo PKCE
code_verifier pret īslaicīgu Bearer tokenu 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)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īmesTas pats verifier, no kura tika aprēķināts PAR 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 Bearer tokensGlabā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?