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āiizmantotochallenge, 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
| Parametrs | Atrašanās vieta | Obligāts | Tips/formāts | Apraksts |
|---|---|---|---|---|
Authorization | Galvene (Header) | Jā | HTTP Basic | OAuth klienta autentifikācija: Base64 no UTF-8 client_id:client_secret. |
ContentType | Galvene (Header) | Jā | Virkne (String) | application/x-www-form-urlencoded. |
response_type | Veidlapas parametri (Form) | Jā | Virkne (String) | Statiska vērtība code. |
client_id | Veidlapas parametri (Form) | Jā | Virkne (String) | Tas pats client_id, ko izmanto Basic autentifikācijā |
redirect_uri | Veidlapas parametri (Form) | Jā | URI | Iepriekš reģistrēts callback URL |
scope | Veidlapas parametri (Form) | Jā | Virkne (String) | Statiska vērtība credential |
state | Veidlapas parametri (Form) | Jā | Virkne (String), ieteicams nejaušs | Korelācijas un CSRF aizsardzības vērtība |
signatureQualifier | Veidlapas parametri (Form) | Jā | Virkne (String) | Statiska vērtība eu_eidas_qes |
acr_values | Veidlapas parametri (Form) | Ieteicams | Virkne (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_method | Veidlapas parametri (Form) | Jā | Virkne (String) | Statiska vērtība S256. |
code_challenge | Veidlapas parametri (Form) | Jā | Base64URL bez padding | SHA-256 no konkrētā ģenerētā code_verifier. |
Atbastītās acr_values vērtības
acr_values vērtības| Lietotāja plūsma | acr_values vērtība | Apraksts |
|---|---|---|
| eID karte datorā | urn:eparaksts:authentication:flow:sc_plugin | Autentifikācija ar fizisku eID karti, kartes lasītāju un viedkartes/eID programmatūru. |
| eID Scan | urn:eparaksts:authentication:flow:mobile-eid | eID Scan plūsma mobilajā ierīcē. |
Piezīme
Parametrs
acr_valuesnosaka, 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
}| Parametrs | Tips | Apraksts | Integratora darbība |
|---|---|---|---|
request_uri | Virkne (String) | PAR pieprasījuma vienreizēja atsauce | Saglabāt un URL kodēt, veidojot authorize_url |
expires_in | Skaitlis (Number) | request_uri derīguma laiks sekundēs | Autorizā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.
| Parametrs | Nosacījums | Apraksts | Integratora darbība |
|---|---|---|---|
code | Veiksmīga autorizācija | Vienreiz lietojams autorizācijas kods. | Saglabāt īslaicīgi un nekavējoties apmainīt pret tokenu. |
state | Ja 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. |
error | Neveiksmīga autorizācija | OAuth kļūdas kods. | Tokena apmaiņu neveikt. |
error_description | Neveiksmīga autorizācija | Kļū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:
| Parametrs | Atrašanās vieta | Obligāts | Tips/formāts | Apraksts |
|---|---|---|---|---|
Authorization | Galvene (Header) | Jā | HTTP Basic | OAuth klienta identifikators un noslēpums |
Content-Type | Galvene (Header) | Jā | Virkne (String) | application/x-www-form-urlencoded |
grant_type | Veidlapas parametri (Form) | Jā | Virkne (String) | Statiska vērtība authorization_code |
client_id | Veidlapas parametri (Form) | Jā | Virkne (String) | OAuth klienta identifikators |
code | Veidlapas parametri (Form) | Jā | Virkne (String) | Callback saņemtais vienreiz lietojamais kods |
redirect_uri | Veidlapas parametri (Form) | Jā | URI | Tā pati vērtība, kas tika izmantota atbilstošajā credential PAR pieprasījumā |
code_verifier | Veidlapas parametri (Form) | Jā | 43–128 PKCE rakstzīmes | Tas 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:
| Parametrs | Tips | Apraksts | Integratora darbība |
|---|---|---|---|
access_token | Virkne (String) | Īslaicīgs Bearer tokens | Glabāt tikai atmiņā vai aizsargātā īslaicīgā glabātuvē; izmantot credentials/info |
token_type | Virkne (String) | Tokena tips | Pārbaudīt, ka vērtība ir Bearer |
expires_in | Skaitlis (Number) | Tokena derīguma laiks sekundēs | Izsaukumi, izmantojot tokenu, jāveic pirms termiņa beigām |
authorization_details | Masīvs (Array) | Piešķirtās autorizācijas konteksts | Pārbaudīt sagaidīto sign_identity_registration un qualifier grupu |
credentialID | Virkne (String) | Jaunā īstermiņa credential identifikators | Saglabāt kā credential_id turpmākajiem izsaukumiem |
Updated about 15 hours ago