Jag tror inte man ska lösa det med inloggning mot Flashback alls om det ska köras via tredjepart. Absolut inte via ett webbläsartillägg. Det är fel distributionsform för något som kräver en stabil tillitsmodell.
Dessutom innebär webbläsartillägg en särskild säkerhetsrisk eftersom de, beroende på tilldelade behörigheter, kan läsa och manipulera innehållet på webbplatser som användaren besöker. Man introducerar alltså ytterligare en privilegierad komponent mellan användaren och tjänsten, med en egen attackyta, behörighetsmodell och uppdateringskedja.
Det blir särskilt problematiskt om tillägget dessutom ska hantera autentisering eller användarens befintliga session. Då flyttar man i praktiken en del av förtroendet från den ursprungliga tjänsten till tredjepartsutvecklaren.
Jag tycker det är betydligt rimligare att separera personalisering från identitet. En tredjepart behöver egentligen bara veta "vad gillar min användare?", inte "vad gillar Flashbacks användare?".
Egentligen kan man gå ännu längre, helt meta-meta, och vända på förhållandet mellan användaren och personaliseringen. Varför ska användaren definiera personaliseringen? Varför inte låta personaliseringen definiera användaren?
Tänk dig att varje besökare får ett eget workspace redan vid första besöket. Ingen registrering, inget lösenord, inget användarnamn. Kanske får besökaren några inledande frågor, ungefär som Reddit gör för att förstå vilka intressen man har.
Utifrån svaren skapas en första konfiguration. Därefter fortsätter den utvecklas när besökaren ändrar inställningar, väljer intressen, filtrerar innehåll, sparar saker och organiserar sitt workspace.
Två besökare kan börja med exakt samma inställningar, men efterhand kommer deras respektive konfigurationer sannolikt att skilja sig åt. Ju mer de personaliserar tjänsten, desto mer individualiserade blir deras profiler.
Det fina är att man inte ens behöver definiera användaren i förväg. Man kan börja med ett anonymt, tillfälligt workspace och låta det övergå till en beständig profil när personaliseringen har nått en viss nivå. Användaren uppstår alltså som ett resultat av användningen, snarare än som ett krav för att få börja använda tjänsten.
Rent tekniskt behöver det inte vara särskilt komplicerat heller.
Vid första besöket skapas ett workspace med ett slumpmässigt internt ID. En cookie gör att webbläsaren hittar tillbaka till samma workspace vid nästa besök. Inställningarna sparas löpande på servern.
När besökaren vill kunna återställa sitt workspace genererar tjänsten en kryptografiskt slumpmässig seed. Den fungerar som en återställningsnyckel och kan exempelvis representeras som en serie ord eller tecken.
Servern kan använda HMAC med en hemlig servernyckel för att härleda en identifierare från denna seed. Identifieraren kopplas till den sparade konfigurationen. Vid återställning matar besökaren in sin seed, servern räknar fram samma identifierare och hittar rätt workspace.
Cookien sköter alltså kontinuiteten i den vanliga webbläsaren, medan seedvärdet gör profilen portabel mellan webbläsare och enheter. Varken Flashbackkonto, e-postadress eller tredjepartsinloggning behövs.
Man behöver heller inte använda personaliseringens innehåll som någon sorts fingerprint. Två identiska konfigurationer kan vara två olika profiler eftersom deras interna identifierare är olika. Det är konfigurationen som ger profilerna deras individuella karaktär, inte som måste bevisa deras tekniska unikhet.
En användare skulle till och med kunna ha flera olika profiler, med olika seeds, beroende på vad denne vill använda tjänsten till. En för arbete, en för privata intressen och en tredje för något helt annat.
Det är alltså inte längre en fråga om att identifiera vem som sitter bakom tangentbordet. Det är en fråga om att identifiera vilket personaliserat workspace som ska användas.
På så sätt blir kontot överflödigt för själva personaliseringen. Man behöver inte skapa en identitet för att kunna spara inställningar. Identiteten, i betydelsen en beständig och igenkännbar profil, växer fram genom inställningarna.
Man går från "vem är du, så ska vi komma ihåg vad du gillar?" till "vi kommer ihåg vad du gillar, och det räcker för att känna igen ditt workspace". Det är en ganska fundamental skillnad i hur man bygger tjänsten.
Dessutom innebär webbläsartillägg en särskild säkerhetsrisk eftersom de, beroende på tilldelade behörigheter, kan läsa och manipulera innehållet på webbplatser som användaren besöker. Man introducerar alltså ytterligare en privilegierad komponent mellan användaren och tjänsten, med en egen attackyta, behörighetsmodell och uppdateringskedja.
Det blir särskilt problematiskt om tillägget dessutom ska hantera autentisering eller användarens befintliga session. Då flyttar man i praktiken en del av förtroendet från den ursprungliga tjänsten till tredjepartsutvecklaren.
Jag tycker det är betydligt rimligare att separera personalisering från identitet. En tredjepart behöver egentligen bara veta "vad gillar min användare?", inte "vad gillar Flashbacks användare?".
Egentligen kan man gå ännu längre, helt meta-meta, och vända på förhållandet mellan användaren och personaliseringen. Varför ska användaren definiera personaliseringen? Varför inte låta personaliseringen definiera användaren?
Tänk dig att varje besökare får ett eget workspace redan vid första besöket. Ingen registrering, inget lösenord, inget användarnamn. Kanske får besökaren några inledande frågor, ungefär som Reddit gör för att förstå vilka intressen man har.
Utifrån svaren skapas en första konfiguration. Därefter fortsätter den utvecklas när besökaren ändrar inställningar, väljer intressen, filtrerar innehåll, sparar saker och organiserar sitt workspace.
Två besökare kan börja med exakt samma inställningar, men efterhand kommer deras respektive konfigurationer sannolikt att skilja sig åt. Ju mer de personaliserar tjänsten, desto mer individualiserade blir deras profiler.
Det fina är att man inte ens behöver definiera användaren i förväg. Man kan börja med ett anonymt, tillfälligt workspace och låta det övergå till en beständig profil när personaliseringen har nått en viss nivå. Användaren uppstår alltså som ett resultat av användningen, snarare än som ett krav för att få börja använda tjänsten.
Rent tekniskt behöver det inte vara särskilt komplicerat heller.
Vid första besöket skapas ett workspace med ett slumpmässigt internt ID. En cookie gör att webbläsaren hittar tillbaka till samma workspace vid nästa besök. Inställningarna sparas löpande på servern.
När besökaren vill kunna återställa sitt workspace genererar tjänsten en kryptografiskt slumpmässig seed. Den fungerar som en återställningsnyckel och kan exempelvis representeras som en serie ord eller tecken.
Servern kan använda HMAC med en hemlig servernyckel för att härleda en identifierare från denna seed. Identifieraren kopplas till den sparade konfigurationen. Vid återställning matar besökaren in sin seed, servern räknar fram samma identifierare och hittar rätt workspace.
Cookien sköter alltså kontinuiteten i den vanliga webbläsaren, medan seedvärdet gör profilen portabel mellan webbläsare och enheter. Varken Flashbackkonto, e-postadress eller tredjepartsinloggning behövs.
Man behöver heller inte använda personaliseringens innehåll som någon sorts fingerprint. Två identiska konfigurationer kan vara två olika profiler eftersom deras interna identifierare är olika. Det är konfigurationen som ger profilerna deras individuella karaktär, inte som måste bevisa deras tekniska unikhet.
En användare skulle till och med kunna ha flera olika profiler, med olika seeds, beroende på vad denne vill använda tjänsten till. En för arbete, en för privata intressen och en tredje för något helt annat.
Det är alltså inte längre en fråga om att identifiera vem som sitter bakom tangentbordet. Det är en fråga om att identifiera vilket personaliserat workspace som ska användas.
På så sätt blir kontot överflödigt för själva personaliseringen. Man behöver inte skapa en identitet för att kunna spara inställningar. Identiteten, i betydelsen en beständig och igenkännbar profil, växer fram genom inställningarna.
Man går från "vem är du, så ska vi komma ihåg vad du gillar?" till "vi kommer ihåg vad du gillar, och det räcker för att känna igen ditt workspace". Det är en ganska fundamental skillnad i hur man bygger tjänsten.