Spletni servis esei-validate, verzija 2023-07-27-01
Spletni servis esei-validate nudi odgovor, ali je bilo določeno digitalno potrdilo izdano fizični osebi z določeno enotno številko elektronske identifikacije (EŠEI) fizične osebe. Servis nudi odgovore za digitalna potrdila izdajateljev v Državnem centru za storitve zaupanja (SI-TRUST). Med ta potrdila sodijo:
- digitalna potrdila na osebni izkaznici,
- digitalna potrdila za oddaljeni podpis SI-PASS,
- (delno) digitalna potrdila SIGEN-CA ter
- (delno) digitalna potrdila SIGOV-CA.
esei-validate: naslov in dostop do servisa ter specifikacija klica
Primer klica servisa v testnem okolju:
https://ws.si-trust.gov.si/esei-validate-test?sn=4000348241024&ca=eid-test-ca-high&esei=1176154629
V produkcijskem okolju je podobno, le brez pripon -test.
Servis deluje po protokolu HTTPS RESTful. Odgovori imajo format "JSON Web Signature (JWS)" s kompaktno serializacijo.
V novejših potrdilih je URL za poizvedbo vpisan v javnem delu potrdila v razširitvi OID=1.3.6.1.4.1.58536.1.1.1.3.1, pri čemer je treba zadnjih 10 ničel (parameter esei) zamenjati s preverjanim EŠEI. Za starejša potrdila lahko odjemalska aplikacija sestavi poizvedbo s podobnim URL tako, da serijsko številko (parameter sn) izlušči iz polja serialNumber v razločevalnem imenu imetnika potrdila.
Digitalno potrdilo, ki nastopa v poizvedbi, mora biti izdano pri enem od izdajateljev v SI-TRUST. Namenjeno mora biti uporabi fizičnim osebam in ne sme biti potrdilo spletišča, potrdilo informacijskega sistema ali elektronski žig.
Potrdilo je enolično določeno z oznako izdajatelja in 13-mestno serijsko števiko.
Ob klicu servisa in vzpostavitvi seje TLS se mora odjemalska aplikacija predstaviti z veljavnim digitalnim potrdilom. Tega potrdila ni potrebano predhodno javljati SI-TRUSTu.
Pomen vhodnih parametrov:
- sn: 13-mestna decimalna serijska številka digitalnega potrdila.
- ca: naziv enega od izdajateljev digitalnih potrdil: sigen-ca, sigov-ca, si-pass-ca, eid-ca-high, eid-ca-low ali eid-ca-sign. V testnem okolju poleg teh še: sitest-ca, eid-test-ca-high, eid-test-ca-low ali eid-test-ca-sign.
- esei: enotna številka elektronske identifikacije (EŠEI) fizične osebe
Vrstni red vhodnih parametrov je poljuben. Naziv izdajatelja je lahko podan z malimi, velikimi ali mešanimi črkami, nazivi parametrov morajo biti podani z malimi črkami.
Strežnik klic zabeleži samo zaradi morebitne pomoči pri razhroščevanju aplikacij, preprečevanju masovnih poizvedb, napadov DOS itd. Trajna povezava z osebo ali potrdilom se ne zabeleži.
esei-validate: specifikacija odgovora
Če ne pride do nepredvidene napake, servis vrne status HTTP 200 in v parametru valid vrednost true ali false glede na to, ali je bilo potrdilo danega izdajatelja z dano 13-mestno serijsko številko izdano osebi z dano EŠEI.
Format odgovora je žeton JWT (JSON Web Token) in je podpisan z JWS (JSON Web Signature). Rezultat se nahaja v srednjem delu (payload) odgovora, med prvo in drugo piko. Odgovor je zakodiran z "Base64", tako kot predpisuje standard za JWT/JWS.
Primer telesa HTTP v odgovoru na gornji primer klica v testnem okolju (z dodanimi prelomi vrstic):
eyJ4NXUiOiJodHRwczpcL1wvd3Muc2ktdHJ1c3QuZ292LnNpXC9lc2VpLWp3cy1j ZXJ0aWZpY2F0ZS10ZXN0IiwiYWxnIjoiUlMyNTYifQ. eyJ2YWxpZCI6dHJ1ZSwic24iOiI0MDAwMzQ4MjQxMDI0IiwiZXNlaSI6IjExNzYx NTQ2MjkiLCJpYXQiOjE2OTA4ODUyMTYsImNhIjoiRUlELVRFU1QtQ0EtSElHSCIs Imp0aSI6Ijg1ZjZmZTU0LTMwMDYtNDIxMC04ZGQzLWU5Yzc3NmZhZDA4ZiJ9. cEwlRadEFvCuokTN-mxx8V28NsRpcEBrkIvJ0D1q2CP6XyemX11c8J1b5lTw1lvO SIKIX-f7kMKGaymUowFE9-uvSzS7462Rjh0ldnLSmMpCrfHEeDt1gq3aNFicjfUm GyUX4ue746M6ac6CxZOh_AvDzP2GmFVUKOyQ5hy0Rj0lRLQsCoi0JR0ASOvI3LRs I6_BTCaE6y4ByOl2qrsjyeZlBKqaOUg1mDbXL-aHWi3Ryr6nwAuy_josp8tldOBV QuTf-Mb7B-q4ro-a3ayf-Qjqoo7arwho9yGr6RanlDEN4-HDmvzVXw7umOjBXll9 DFSD4vcMBdw9xJ8UGb_NdQ
Glava in vsebina (payload) po dekodiranju base64:
{"x5u":"https:\/\/ws.si-trust.gov.si\/esei-jws-certificate-test" ,"alg":"RS256"} {"valid":true, "sn":"4000348241024", "esei":"1176154629", "iat":1690885216, "ca":"EID-TEST-CA-HIGH", "jti":"85f6fe54-3006-4210-8dd3-e9c776fad08f"}
Opis polj:
- x5u: URL verige potrdil (več spodaj), s katerim je narejen podpis
- alg: algoritem podpisa
- valid: ali je potrdilo (ca,sn) bilo izdano fizični osebi esei
- sn: 13-mestna decimalna števika potrdila
- esei: enotna številka elektronske identifikacije državljana
- iat: čas izdelave žetona
- ca: oznaka izdajatelja
- jti: unikatna številka žetona
Veriga potrdil v datoteki na naslovu x5u se začne s potrdilom, s katerim je žeton podpisan, in nadaljuje s potrdili izdajateljev. Veriga ne vsebuje korenskega potrdila, ki je na produkciji standardni SI-TRUST Root, na testu pa je potrdilo SI-CA Root Test objavljeno na strani https://www.si-trust.gov.si/sl/podpora-uporabnikom/testna-digitalna-potrdila/
Če pride do napake na aplikacijskem nivoju (nepravilna poizvedba, izpad zalednega strežnika itd.), servis vrne status HTTP različen od 200 in v telesu HTTP dodatne informacije o napaki v formatu JSON. Tukaj niso opisane napake pred ali med vzpostavitvijo seje HTTPS.
Možni sta dve obliki opisa napake:
{"errorCode":"ST-114-936", "errorDetails":"Podani ca (EID-CA-LOW...) ni veljaven ali se ne ujema s tipom..."} {"errors": {"ca":"(not (storitve-ca.web-ui/existing-ca \"SITEST_CA\"))", "sn":"(not (\"13 mest\" \"27092016120011\"))"}}
Prvo obliko generira servis za semantične napake in drugo knjižnica Swagger za sintaktične napake, npr. za napačna ali manjkajoča imena parametrov.