Hoppa till huvudinnehåll

Credential Offer

Ett Credential Offer är det meddelande en utfärdare skickar till en plånbok för att starta utfärdande enligt OpenID4VCI: det namnger utfärdaren, anger vilka credentials som erbjuds och talar om för plånboken hur den får hämta dem.

I praktiken är erbjudandet det som ligger bakom QR-koden på en utfärdandesida eller länken i ett e-postmeddelande eller en app. Det kan levereras med värde, inbäddat direkt i en openid-credential-offer://-deep link eller QR-nyttolast, eller med referens, som en URL plånboken hämtar för att få samma innehåll, vilket håller koden kort när erbjudandet namnger flera intyg eller bär ett långt utfärdartillstånd. Att skanna eller öppna det ger plånboken utfärdarens URL och en eller flera identifierare för intygskonfiguration, plus ett grant som avgör resten av flödet: ett authorization code grant skickar innehavaren genom utfärdarens egen inloggning först, användbart när erbjudandet skapades på en annan enhet än den som slutför flödet, medan ett pre-authorized code grant används när innehavaren redan autentiserats där erbjudandet skapades, till exempel direkt efter inloggning på en myndighetsportal, valfritt skyddat av en transaktionskod som visas på samma kanal så att en kod som fångats upp under transport inte kan lösas in av någon annan. Därifrån läser plånboken utfärdarens metadata för att lära sig vad de namngivna intygen faktiskt innehåller, byter ut grantet mot en åtkomsttoken vid utfärdarens tokenslutpunkt, och anropar intygsslutpunkten för att hämta det som erbjöds, ett intyg eller en batch i taget beroende på vad utfärdaren stödjer.

Varför ber vissa Credential Offer om en transaktionskod och andra inte?

En transaktionskod krävs närhelst erbjudandet använder ett pre-authorized code grant, eftersom innehavaren redan autentiserats på en annan kanal och koden bevisar att personen som skannar erbjudandet är samma person som den kanalen autentiserade. Ett authorization code grant skickar i stället innehavaren genom utfärdarens egen inloggning som en del av flödet, så det finns ingen separat kanal att binda till och ingen kod behövs.

Tillbaka till ordlistan