Eisiúint dintiúir OpenID4VCI mínithe: ón tairiscint go dtí an dintiúr glactha
Sainmhíníonn OpenID4VCI, OpenID for Verifiable Credential Issuance, conas a iarrann agus a fhaigheann sparán dintiúr ó eisitheoir. Reáchtálann eisiúint aonair trí roinnt céimeanna ar leith sula bhfuil dintiúr inúsáidte ag an sparán go hiarbhír, agus tá a mhodh teipe féin ag gach ceann acu. Siúlann an leathanach seo tríd an tsaolré sin go hiomlán, le samplaí oibrithe bunaidh.
Dhá bhealach chun tosú: cód réamhúdaraithe agus cód údaraithe
Is minic a thosaíonn eisiúint ó Thairiscint Dintiúir a sheolann an t-eisitheoir, agus cinneann an deontas a ainmníonn sí conas a bhronntar údarú ar an sparán. Féadann sparán eisiúint a thosú é féin freisin, gan aon tairiscint, ag baint úsáide as an sreabhadh cóid údaraithe. Críochnaíonn an dá shreabhadh ag an áit chéanna: an sparán ag sealbhú comhartha rochtana is féidir leis a úsáid chun an dintiúr a iarraidh.
Sreabhadh cóid réamhúdaraithe
1. Eisitheoir
Tá aithne aige cheana féin ar an sealbhóir, tugann sé Tairiscint Dintiúir amach le cód pre-authorized_code
2. Sparán
Fuascailteann sé an cód ag an bpointe deiridh tairbhe, go roghnach le cód idirbhirt
3. Sparán
Iarrann sé an dintiúr le cruthúnas seilbhe ar a eochair féin
Sreabhadh cóid údaraithe
1. Sparán
Scanann sé Tairiscint Dintiúir a ainmníonn deontas authorization_code, nó cuireann sé tús leis an bpróiseas é féin gan tairiscint ar bith
2. Freastalaí Údaraithe
Treoraíonn sé an sealbhóir trí shíniú isteach agus toiliú, ansin eisíonn sé cód
3. Sparán
Malartaíonn sé an cód ar chomhartha, ansin iarrann sé an dintiúr
Saolré iomlán tairiscint dintiúir
Ní shainmhíníonn an sonraíocht staideanna ainmnithe, ach is éasca sreabhadh arna thionscnamh ag an eisitheoir, ina n-eisítear an dintiúr láithreach, a leanúint mar an seicheamh thíos. Féadann gach céim teip ar a bhealach féin, agus caithfidh cur i bhfeidhm sparáin na conairí sin a láimhseáil, ní hamháin an ceann rathúil.
Sampla oibrithe: teastas oiriúnachta bóthair d'fhleit iompair
Eisíonn comhlacht iniúchta feithiclí teastas oiriúnachta bóthair chuig sparán gnó chuideachta iompair tar éis gnáthiniúchta. Bhí an bainisteoir fleiteála fíordheimhnithe cheana féin ag an iniúchóir ag an bpointe iniúchta, mar sin úsáideann an t-eisitheoir an sreabhadh cóid réamhúdaraithe. Leanann na céimeanna thíos an eisiúint aonair sin ón tairiscint go dtí an dintiúr glactha.
Léiríonn an sampla an bun-OpenID4VCI. Leanann imlonnuithe ardchinntitheachta ar nós EUDI Wallet an phróifíl HAIP anuas air sin, a chuireann leis comharthaí rochtana ceangailte le DPoP, deimhniú sparáin ag an bpointe deiridh comhartha agus deimhniú eochrach do na heochracha dintiúir. Fágtar iad sin ar lár anseo chun gach céim a choinneáil inléite.
1. Tairiscint dintiúir
Taispeánann teirminéal an chomhlachta iniúchta cód QR. Tá URI a thosaíonn le openid-credential-offer:// ann a iompraíonn an tairiscint thíos, códaithe URL i bparaiméadar credential_offer, nó credential_offer_uri óna bhfaigheann an sparán é. Scanann an sparán é agus léann sé cén dintiúr atá á thairiscint agus conas é a bhailiú.
Eisitheoir
Taispeánann cód QR le Tairiscint Dintiúir
Ainmníonn sé cumraíocht an dintiúir agus deontas pre-authorized_code
{
"credential_issuer": "https://issuer.fleetinspect.example",
"credential_configuration_ids": ["roadworthiness_certificate"],
"grants": {
"urn:ietf:params:oauth:grant-type:pre-authorized_code": {
"pre-authorized_code": "fi-8f2c0b3a",
"tx_code": {
"length": 6,
"input_mode": "numeric",
"description": "Enter the code sent to your phone by text message"
}
}
}
}2. Fionnachtain meiteashonraí eisitheora
Sula n-iarrann sé rud ar bith, faigheann an sparán meiteashonraí an eisitheora chun foghlaim cad atá i roadworthiness_certificate agus cé na pointí deiridh atá le glaoch. Ní liostaíonn na meiteashonraí freastalaithe údaraithe ar leith, mar sin is é an t-eisitheoir a fhreastalaí údaraithe féin, agus léann an sparán an pointe deiridh comhartha ó mheiteashonraí an fhreastalaí sin.
Sparán
GET /.well-known/openid-credential-issuer
Foghlaimíonn sé formáid an dintiúir, na héilimh agus na cineálacha cruthúnais a nglactar leo, chomh maith leis na pointí deiridh nonce, dintiúir, iarchurtha agus fógra
Meiteashonraí eisitheora dintiúir (sliocht)
{
"credential_issuer": "https://issuer.fleetinspect.example",
"nonce_endpoint": "https://issuer.fleetinspect.example/nonce",
"credential_endpoint": "https://issuer.fleetinspect.example/credential",
"deferred_credential_endpoint": "https://issuer.fleetinspect.example/deferred",
"notification_endpoint": "https://issuer.fleetinspect.example/notify",
"credential_configurations_supported": {
"roadworthiness_certificate": {
"format": "dc+sd-jwt",
"vct": "https://fleetinspect.example/vct/roadworthiness",
"cryptographic_binding_methods_supported": ["jwk"],
"credential_signing_alg_values_supported": ["ES256"],
"proof_types_supported": {
"jwt": { "proof_signing_alg_values_supported": ["ES256"] }
},
"credential_metadata": {
"claims": [
{ "path": ["vehicle_registration"] },
{ "path": ["inspection_result"] },
{ "path": ["valid_until"] }
]
}
}
}
}Meiteashonraí an fhreastalaí údaraithe (sliocht), ó /.well-known/oauth-authorization-server
{
"issuer": "https://issuer.fleetinspect.example",
"token_endpoint": "https://issuer.fleetinspect.example/token",
"pre-authorized_grant_anonymous_access_supported": true
}3. Iarratas ar chomhartha
Fuascailteann an sparán an cód réamhúdaraithe ag an bpointe deiridh comhartha, in éineacht leis an gcód idirbhirt a sheol an comhlacht iniúchta chuig fón an bhainisteora fleiteála. Ciallaíonn sé go seoltar an cód sin thar dara cainéal nach féidir le duine a thógann grianghraf den chód QR thar a ghualainn é a fhuascailt fós.
Sparán
POST /token
Seolann sé an pre-authorized_code agus an tx_code, faigheann sé comhartha rochtana teoranta don tairiscint seo
POST /token HTTP/1.1 Host: issuer.fleetinspect.example Content-Type: application/x-www-form-urlencoded grant_type=urn:ietf:params:oauth:grant-type:pre-authorized_code &pre-authorized_code=fi-8f2c0b3a &tx_code=482913
Freagra
{
"access_token": "fi-at-3d91e0",
"token_type": "Bearer",
"expires_in": 86400
}4. Cruthúnas seilbhe
Toisc go liostaíonn na meiteashonraí nonce_endpoint, faigheann an sparán c_nonce úr ón áit sin ar dtús. Ansin cruthaíonn sé go bhfuil an eochair phríobháideach a mbeidh an dintiúr ceangailte léi aige, trí proof JWT a shíniú thar aitheantóir an eisitheora agus an c_nonce sin.
Sparán
POST /nonce, ansin sínithe proof JWT leis an eochair a mbeidh an dintiúr ceangailte léi
Ceanglaíonn sé an dintiúr leis an eochair sin, ní hamháin le cibé duine a shealbhaíonn an comhartha rochtana
POST /nonce HTTP/1.1 Host: issuer.fleetinspect.example
Freagra
{
"c_nonce": "fi-nonce-77aa"
}Tógann an sparán anois an proof JWT ó dhá réad JSON, ceanntásc agus pálasta, agus sínithe iad leis an eochair phríobháideach a mbeidh an dintiúr ceangailte léi.
Ceanntásc: cad é an JWT seo agus cén eochair a shínigh é
{
"typ": "openid4vci-proof+jwt",
"alg": "ES256",
"jwk": { "kty": "EC", "crv": "P-256", "x": "...", "y": "..." }
}typ: marcálann sé seo mar chruthúnas eochrach OpenID4VCI, ionas nach féidir é a mheascadh le haon chineál eile JWTalg: an t-algartam sínithe, ceann a liostaigh an t-eisitheoir i proof_signing_alg_values_supportedjwk: an eochair phoiblí a mbeidh an dintiúr ceangailte léi; deimhníonn an t-eisitheoir an síniú ina coinne
Pálasta: cé dó a bhfuil an cruthúnas agus cathain a rinneadh é
{
"aud": "https://issuer.fleetinspect.example",
"iat": 1789376400,
"nonce": "fi-nonce-77aa"
}aud: aitheantóir an eisitheora, ionas nach féidir an cruthúnas a athsheinm ag eisitheoir eileiat: an t-am ar cruthaíodh an cruthúnas, i soicindí ó 1970nonce: an c_nonce ón bpointe deiridh nonce, a léiríonn go bhfuil an cruthúnas úr
An toradh sínithe
Códaítear an ceanntásc agus an pálasta go leithleach i base64url agus ceanglaítear le ponc iad. Sínithe an sparán an teaghrán sin lena eochair phríobháideach agus cuireann sé an síniú códaithe base64url leis tar éis dara ponc. Is é an teaghrán mar thoradh air an proof JWT a sheolann an sparán san iarratas dintiúir i gcéim 5.
base64url(header) . base64url(payload) . base64url(signature) eyJ0eXAiOiJvcGVuaWQ0dmNpLXByb29mK2p3dCIs... .eyJhdWQiOiJodHRwczovL2lzc3Vlci5mbGVldGluc3BlY3QuZXhhbXBsZSIs... .<ES256 signature>
5. Iarratas dintiúir
Glaonn an sparán ar an bpointe deiridh dintiúir leis an gcomhartha rochtana agus an cruthúnas, agus bunaíonn agus tugann an t-eisitheoir ar ais an dintiúr sínithe.
Sparán
POST /credential
Seolann sé an comhartha rochtana, aitheantóir na cumraíochta agus an proof JWT, faigheann sé an dintiúr sínithe agus notification_id
POST /credential HTTP/1.1
Host: issuer.fleetinspect.example
Content-Type: application/json
Authorization: Bearer fi-at-3d91e0
{
"credential_configuration_id": "roadworthiness_certificate",
"proofs": {
"jwt": ["<proof JWT from step 4>"]
}
}Freagra
{
"credentials": [
{ "credential": "<issuer-signed SD-JWT VC>" }
],
"notification_id": "fi-notif-9012"
}An sreabhadh iomlán ar amharc amháin
Cuireann an léaráid seichimh seo cúig chéim an tsampla oibrithe le chéile, ón tairiscint go dtí an fógra. Is iarratais iad saigheada soladacha, is freagraí iad saigheada briste, agus is é an tsaighead phoncaithe an cód idirbhirt ag taisteal lasmuigh den phrótacal trí theachtaireacht téacs.
Sparán
Sparán gnó chuideachta iompair
Freastalaí Údaraithe
Á reáchtáil ag an eisitheoir féin sa sampla seo
Eisitheoir Dintiúir
Comhlacht iniúchta feithiclí
- Eisitheoir Dintiúir go Sparán: Tairiscint Dintiúir, léirithe mar chód QR
- Eisitheoir Dintiúir go Sparán: tx_code, seolta chuig fón an bhainisteora fleiteála le teachtaireacht téacs
- Sparán go Eisitheoir Dintiúir: GET /.well-known/openid-credential-issuer
- Eisitheoir Dintiúir go Sparán: meiteashonraí eisitheora dintiúir
- Sparán go Freastalaí Údaraithe: GET /.well-known/oauth-authorization-server
- Freastalaí Údaraithe go Sparán: meiteashonraí an fhreastalaí údaraithe
- Sparán go Freastalaí Údaraithe: POST /token: pre-authorized_code, tx_code
- Freastalaí Údaraithe go Sparán: access_token
- Sparán go Eisitheoir Dintiúir: POST /nonce
- Eisitheoir Dintiúir go Sparán: c_nonce
- Sparán: sínithe proof JWT
- Sparán go Eisitheoir Dintiúir: POST /credential: comhartha rochtana, cruthúnais
- Eisitheoir Dintiúir go Sparán: credentials, notification_id
- Sparán: deimhníonn agus stórálann
- Sparán go Eisitheoir Dintiúir: POST /notify: credential_accepted
- Eisitheoir Dintiúir go Sparán: 204 No Content
Nuair nach bhfuil an dintiúr réidh fós: eisiúint iarchurtha
Glacann an sampla thuas leis go bhfuil toradh an iniúchta cinntitheach cheana féin. Má tá ar an gcomhlacht iniúchta ina ionad sin toradh teorantach a chur chuig sinsear-iniúchóir, ní féidir leis an bpointe deiridh dintiúir an dintiúr a thabhairt ar ais láithreach, mar sin iarchuireann sé an eisiúint.
Eisiúint láithreach
Cuireann an pointe deiridh dintiúir an dintiúr sínithe ar ais san fhreagra céanna leis an iarratas.
Eisiúint iarchurtha
Freagraíonn an pointe deiridh dintiúir le HTTP 202, transaction_id agus eatramh. Déanann an sparán vótáil ar an bpointe deiridh dintiúir iarchurtha leis an aitheantas sin, ag fanacht ar a laghad an méid interval soicind idir iarratais, go dtí go mbíonn an dintiúr réidh.
Freagra iarchurtha ó /credential
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"transaction_id": "fi-tx-55c2",
"interval": 900
}Ag vótáil ar /deferred go dtí go mbíonn sé réidh
POST /deferred HTTP/1.1
Host: issuer.fleetinspect.example
Content-Type: application/json
Authorization: Bearer fi-at-3d91e0
{ "transaction_id": "fi-tx-55c2" }
// While the review is open: 202 with the same transaction_id and interval.
// Once approved: 200 with the credentials, optionally with a notification_id.
// If the review rejects the result: a credential_request_denied error.Ag dúnadh an chiorcail: an pointe deiridh fógra
Tar éis na heisiúna, is féidir leis an sparán a insint don eisitheoir cad a tharla don dintiúr, ag baint úsáide as an notification_id ón bhfreagra dintiúir. Ní gá do sparáin na fógraí seo a sheoladh agus níl an seachadadh ráthaithe, mar sin ní féidir le heisitheoir aon bhrí a bhaint as fógra atá in easnamh.
Sparán
Postálann sé teagmhas chuig notification_endpoint an eisitheora don notification_id a fuair sé, a chlúdaíonn gach dintiúr san fhreagra sin
Stóráilte sa sparán
Theip ar an eisiúint ar chúis ar bith eile, mar shampla nár bailíodh an dintiúr
Theip ar an eisiúint mar gheall ar an sealbhóir, mar shampla dhiúltaigh sé é a stóráil
POST /notify HTTP/1.1
Host: issuer.fleetinspect.example
Content-Type: application/json
Authorization: Bearer fi-at-3d91e0
{
"notification_id": "fi-notif-9012",
"event": "credential_accepted"
}Téarmaí Gaolmhara
Ceisteanna Coitianta
Conas a bhíonn a fhios ag sparán cén cineál deontais atá le húsáid?
Ainmníonn an Tairiscint Dintiúir an deontas ina réad grants. Bíonn authorization_code i láthair nuair is mian leis an eisitheoir go síneálfaidh an sealbhóir isteach mar chuid den phróiseas. Bíonn pre-authorized_code i láthair nuair a bhí an sealbhóir fíordheimhnithe cheana féin ar an gcainéal ar cruthaíodh an tairiscint air, mar shampla ag an iniúchóir ag an bpointe iniúchta sa sampla oibrithe thíos. Féadann tairiscint an dá cheann a liostú, agus ansin roghnaíonn an sparán ceann amháin. Mura bhfuil réad grants ar bith ag an tairiscint, féachann an sparán cé na cineálacha deontais a thacaíonn an freastalaí údaraithe leo ina mheiteashonraí.
Cén fáth a bhfaigheann an sparán meiteashonraí an eisitheora sula n-iarrann sé rud ar bith?
Ní ainmníonn an Tairiscint Dintiúir ach na credential_configuration_ids, URL an eisitheora agus na grants. Is iad meiteashonraí an eisitheora, a fhreastalaítear ó chonair aitheanta, a chuireann síos ar gach cumraíocht: a fhormáid, a éilimh agus na cineálacha cruthúnais a nglactar leo, chomh maith leis na pointí deiridh nonce, dintiúir, iarchurtha agus fógra. Deir sé freisin cén freastalaí údaraithe atá le húsáid, agus tugann meiteashonraí an fhreastalaí sin an pointe deiridh comhartha. Gan an dá cheann, ní bheadh a fhios ag an sparán conas iarratais bhailí a chruthú nó cad atá le taispeáint don sealbhóir sula dtoilíonn sé.
Cad go díreach a chruthaíonn an cruthúnas seilbhe?
Cruthaíonn sé go bhfuil an eochair phríobháideach a mbeidh an dintiúr ceangailte léi ag an sparán atá ag iarraidh an dintiúir, ní hamháin go bhfuil comhartha rochtana bailí aige. Sínithe an sparán proof JWT thar aitheantóir an eisitheora agus c_nonce úr ó phointe deiridh nonce an eisitheora, ag baint úsáide as an eochair sin. Leabaíonn an t-eisitheoir an eochair phoiblí chomhoiriúnach sa dintiúr. Iarrann fíoraitheoir a éilíonn ceangal eochrach ar an sealbhóir síniú arís leis an eochair chéanna agus é á thaispeáint, agus mar sin teipeann ar dhintiúr cóipeáilte gan an eochair sa seiceáil sin.
Cén fáth a n-iarchuirfeadh eisitheoir eisiúint in ionad an dintiúr a thabhairt ar ais láithreach?
Ní féidir cuid de na seiceálacha a dhéanann an t-eisitheoir sula mbunaítear dintiúr a chríochnú laistigh d'aon iarratas HTTP amháin, mar shampla athbhreithniú láimhe nó glao ar chlár seachtrach mall. Ligeann eisiúint iarchurtha don phointe deiridh dintiúir freagairt láithreach le transaction_id in ionad an nasc a bhac, agus déanann an sparán vótáil ar an bpointe deiridh iarchurtha leis an aitheantas sin go dtí go gcríochnaítear an tseiceáil agus go mbíonn an dintiúr réidh le bailiú.
An bhfuil sé riachtanach don eisitheoir an pointe deiridh fógra a chur i bhfeidhm?
Níl. Tá sé roghnach do na heisitheoirí, agus ní gá do sparáin é a úsáid ach oiread. Nuair a thacaíonn an bheirt leis, foghlaimíonn an t-eisitheoir cad a tharla tar éis na heisiúna: stóráladh na dintiúir (credential_accepted), stop an sealbhóir an eisiúint, mar shampla trí dhiúltú iad a stóráil (credential_deleted), nó theip air ar chúis eile (credential_failure). Níl an seachadadh ráthaithe, mar sin ba chóir d'eisitheoir fógra a láimhseáil mar fhaisnéis úsáideach, riamh mar thaifead iontaofa, agus ní féidir leis aon rud a bhaint as ceann atá in easnamh.
Foinsí
Tá an leathanach seo faisnéiseach agus ní comhairle dhlíthiúil é. Le haghaidh treorach údarásaí déan teagmháil dhíreach leis an OpenID Foundation agus leis an gCoimisiún Eorpach.