Flöden på samma enhet och mellan enheter förklarade
Varje gång en plånbok bevisar något för en webbplats måste de två hitta varandra. Ibland finns de redan i samma telefon och överlämningen är ett enda tryck. Ibland står webbplatsen på ett skrivbord och plånboken ligger i en ficka, och den enda bron mellan dem är en kod på skärmen. Det här är flödet på samma enhet och flödet mellan enheter, och nästan varje praktisk fråga om digitala intyg handlar i slutänden om vilket av de två du befinner dig i.
Två former av samma utbyte
Det de två flödena har gemensamt är allt som spelar roll för verksamheten: samma fråga ställs, samma person godkänner den och samma bevis kommer tillbaka. Vad ni får be om, eller vad ni kan lita på efteråt, beror inte på vilket flöde ni befinner er i.
Det som skiljer är vägen. I det ena är plånboken ett tryck bort och ger svaret direkt tillbaka till sidan som frågade. I det andra går svaret från en andra enhet till era servrar, och sidan som personen tittar på måste få veta att det har kommit fram.
Samma enhet
En telefon. Webbplats och plånbok på samma skärm.
- Besökaren är på webbplatsen i telefonens webbläsare och ombeds bevisa något.
- Webbplatsen öppnar plånboken med en djuplänk eller en omdirigering.
- Plånboken visar vem som frågar och varför, och besökaren godkänner.
- Plånboken skickar tillbaka besökaren till webbplatsen med svaret, i samma webbläsarsession som startade utbytet.
Över två enheter
Två enheter. Webbplatsen på en dator, plånboken i en telefon.
- Besökaren är på webbplatsen i en webbläsare på datorn och ombeds bevisa något.
- Webbplatsen visar en QR-kod som bär förfrågan.
- Plånboken i telefonen skannar koden, visar vem som frågar, och besökaren godkänner.
- Plånboken skickar svaret till webbplatsens backend, som meddelar sidan på datorn att utbytet är klart.
När vart och ett inträffar
Ni får inte välja. En kund som öppnar er onboardingsida i telefonen under pendlingen är i ett flöde på samma enhet. Samma kund, som slutför samma formulär vid ett skrivbord nästa morgon, är i ett flöde mellan enheter. Plånboken finns i en telefon, så flödet följer med dit där resten av arbetet sker.
Därför beskriver båda protokollen i det europeiska ekosystemet båda flödena. Presentation, där ni ber någon bevisa något, namnger de två flödena uttryckligen. Utfärdande, där ni ger någon ett intyg, gör samma åtskillnad för erbjudandet som startar det: det kan dyka upp på enheten där plånboken finns, eller komma via vilken annan väg som helst, ända ner till ett brev med en tryckt kod.
En tjänst som bara används inom er egen organisation, på hanterade datorer, kan rimligen starta med ett flöde. Allt som en medborgare eller kund når på egna villkor behöver båda, och en tjänst som bara fungerar på ett sätt kommer att rapporteras som trasig snarare än som ej stödd.
Vad vart och ett kostar den som använder det
Samma enhet är den kortare vägen. Det finns ingen andra skärm, ingen kamera och inget ögonblick då blicken flyttas från en enhet till en annan, och personen hamnar tillbaka där den började. När det misslyckas sker det oftast tidigt och synligt: ingen plånbok är installerad, eller så öppnar länken något som inte alls är en plånbok.
Mellan enheter kostar en skanning, men ger något verkligt i utbyte. Personen stannar kvar på den stora skärmen där den fyllde i ett långt formulär, läste ett avtal eller jämförde alternativ, och bara själva beviset flyttar till telefonen. För allt som kräver mer än en minuts skrivande är det den bättre platsen att vara på.
Dess fel är tystare och värda att designa för. En kod som gick ut medan någon letade efter telefonen, en telefon utan täckning, en kamera som inte vill fokusera. Sidan som visar koden bör tala om hur länge den gäller, erbjuda en ny utan att formuläret under försvinner och aldrig lämna personen osäker på om något har hänt.
Där de verkligen skiljer sig: säkerhet
I ett flöde på samma enhet kommer svaret tillbaka samma väg som personen gick: en omdirigering, på enheten där plånboken körs, in i den webbläsarsession som startade utbytet. Den som kopierar förfrågan från sin egen skärm har inget sätt att ta emot resultatet, eftersom det levereras till enheten som godkände.
I ett flöde mellan enheter kommer svaret inte alls tillbaka via webbläsaren. Det går från telefonen till era servrar, utom synhåll för sidan som visade koden. Det är där luckan finns: om ni inte knyter koden till sessionen som visade den kan er tjänst inte skilja personen framför den från någon som satte samma kod framför ett offer och väntade.
Attacken har ett namn och ett motmedel. Koden måste tillhöra en enda session, och ett resultat som kommer in för någon annan session måste avvisas. Det kräver några rader eftertanke i designfasen och är en känd lucka om det hoppas över, och därför skrev IETF en best current practice för flöden mellan enheter i stället för att lämna frågan åt varje enskild implementation.
Den andra risken är nätfiske, och den hör till själva koden. En svartvit fyrkant säger ingenting till personen om vem som finns i andra änden, så en kod tryckt på ett klistermärke och fastklistrad över en äkta är en trovärdig attack. Försvaret är att plånboken, inte koden, namnger organisationen som frågar och listar exakt vad den vill ha innan något delas. Utfärdande lägger till ytterligare ett lås: ett erbjudande kan kräva en kort kod som levereras via den kanal som redan har identifierat personen, så att ett erbjudande som snappas upp på vägen inte kan lösas in av någon annan.
Vad detta betyder för dig
Förlitande part
Planera för båda från början. Det extra arbetet ligger i er frontend och i att knyta koden till en session, inte i en andra integration, och att bygga in den kopplingen i efterhand är just den del som går snett.
Utfärdare
Bestäm hur ert erbjudande når människor. På skärmen bredvid en inloggning, i ett mejl eller på papper: vart och ett hamnar i ett annat flöde, och de som lämnar er kanal är de som behöver en separat kod för att lösas in.
Plånboksinnehavare
Läs vad plånboken visar dig, inte vad sidan eller koden påstår. Plånboken är det enda stället som anger vem som frågar och vad de vill ha, och det är sista tillfället då du kan säga nej.
Relaterade termer
Vanliga frågor
Vem bestämmer vilket flöde som används?
Situationen gör det, inte en inställning. Om personen redan är på enheten där plånboken finns lämnar webbplatsen över direkt. Om de sitter vid en dator och plånboken ligger i fickan är en kod att skanna den enda vägen över. En tjänst som är öppen för allmänheten kommer att möta båda redan under sin första vecka.
Innebär stöd för båda att allt måste byggas två gånger?
Nej. Förfrågan ni skickar och svaret ni kontrollerar är desamma i båda fallen. Det som skiljer är hur förfrågan når plånboken och hur svaret kommer tillbaka till er sida: en omdirigering som webbläsaren följer, eller en kod på skärmen plus ett sätt för sidan att få veta att utbytet är klart. I praktiken är det en extra väg i frontend, inte en andra integration.
Är det säkert att använda en QR-kod för det här?
Ja, när utbytet runt den är rätt byggt. En kod i sig säger ingenting till personen om vem som frågar, så två saker måste gälla: plånboken måste visa identiteten på organisationen som frågar innan något delas, och er egen tjänst måste avvisa ett svar som kommer in för en annan session än den som visade koden. Båda är etablerad praxis och båda finns nedskrivna i specifikationerna.
Är en kontroll vid en disk ett flöde mellan enheter?
Nej, det är ett tredje fall. Både samma enhet och mellan enheter beskriver ett utbyte över internet. En kontroll ansikte mot ansikte, där de två enheterna hålls intill varandra, använder i stället en närhetsstandard över Bluetooth eller NFC. För den som håller i telefonen ser det likadant ut, men ingenting går via er webbplats.
Källor
Den här sidan är informativ och utgör inte juridisk rådgivning. För auktoritativ vägledning, läs OpenID- och IETF-specifikationerna direkt.