Tillåt anonym användning av öppna apier
Förslaget bygger på principen att det ska vara frivilligt att ange vem man är vid interaktion med det offentligas öppna data, förslaget i sin korthet innebär att:
- det ska vara frivilligt att ange vem man är
- ett spårbarhets-id kan anges vid interaktion med offentliga öppna API:er [1]
- offentliga aktörer kan använda DIGG:s forum som utfärdare av id:n för spårbarhet
Definitionen av öppna data säger:
Öppna data är sådana data som vem som helst fritt får använda, återanvända och distribuera med som största motprestation att ange källa eller krav på att dela data på samma sätt.
– Open Knowledge Foundation, en ideell organisation som verkar för utveckling av öppna data [2]
En tvingande identifiering av användare bör ses som icke förenlig med intentionen i PSI-lagstiftningen [3] och kommande öppna data direktiv 2019/1024. En rimlig tolkning är att det offentliga ska undvika att ställa motkrav på konsumenterna av offentlig information vilket inkluderar identifiering av användaren.
Organisationer som tillhandahåller öppna data vill kunna stävja missanvändning och följa hur öppna data skapar nytta, det blir rimligen svårare när det finns en osäkerhet angående vem som använder ett API. Från användarens synvinkel föreligger oftast behov av att få regelbunden information om kommande uppdateringar och inträffade incidenter etc. Med en genomtänkt arkitektur föreligger ingen motsättning i att tillhandahålla en anonym tillgång och samtidigt ha en dialog med användarna i en separat kanal. Möjlighet att följa användningen och att garantera driftsäkerhet går alltså att kombinera med anonym tillgång till API:et där alternativet att spåra användning erbjuds som ett tillägg.
Förslag till lösning
I korthet innebär lösningen att användaren:
- kan prova eller använda API:er i produktion utan att ange sin identitet.
- frivilligt kan förmedla en identitet som används för att följa användningen och kan vara krav för att erbjuda en högre servicenivå.
- kan kvittera ut ett id baserat på sitt användarkonto i Sveriges utvecklarportal [4].
Hur förmedlar användaren sin identitet?
I HTTP-protokollet finns attributet referer [5]. Detta attribut kan med fördel användas för att förmedla från vilken del av en webbtjänst som anropet görs. Informationen från referer är lämplig att använda för analys, logging med mera.
Attribut from kan användas för att frivilligt förmedla en identitet. Ursprungligen användes attributet för att förmedla en e-mailadress. Men i denna rekommendation föreslås en kryptologisk hashad URL (till ett användarkonto) som inte kan återskapas av tredje part. Processen för att hasha URL:en föreslås ske från ett redan öppet forum såsom DIGG:s utvecklarportal där användaren frivilligt har skapat ett användarkonto.
Referer
HTTP headers är ett sätt för en klient att skicka ytterligare information till en server. Mozilla beskriver syftet enligt följande.
When making resource requests to another domain, this would be the address of the page using the resource
Exempel på information som kan förmedlas till API:et via en http header:
Referer: https://jobbsajt.se/jobbsök
Vilken del av URL som förmedlas till servern bestäms av den referrer-policy [6] som klienten väljer.
- Referrer-Policy: no-referrer
- Referrer-Policy: no-referrer-when-downgrade
- Referrer-Policy: origin
- Referrer-Policy: origin-when-cross-origin
- Referrer-Policy: same-origin
- Referrer-Policy: strict-origin
- Referrer-Policy: strict-origin-when-cross-origin
- Referrer-Policy: unsafe-url
From
Myndigheter har användarforum för att diskutera med sina användare, antingen i form av den nationella Community på Sveriges dataportal eller domänspecifika som exempelvis Jobtechdev.se/forum. För dessa forum finns redan existerande användarprofiler och det är utifrån dessa användarprofiler som ett spårbarhets-id kan skapas. Attributet from i HTTP specificerar från början en email för den användaren som kontrollerar anropet. Föreslagen lösning är är att användaren av offentliga API:er frivilligt kan ange sin hashade URI som värde i detta attribut.
Exempel på http header för en användare
From: 4cdf99d62d21f5f81dd6880e01a5390e
Exempel på hur användaren hämtar sitt id genom att logga in på portalen
Hur kan DIGG eller annan myndighet skapa ett id för användaren Profil - jonas - JobTech Development forum
echo -n https://forum.jobtechdev.se/u/jonas/ | md5
4cdf99d62d21f5f81dd6880e01a5390e
Notera! Istället för md5 bör kanske sha256 användas och eventuellt med en HMAC (innehåller en privat nyckel) så att inte tredjepart kan återskapa hashsumman från de publika profilerna.
echo -n "URI-till-publik-profil" | openssl dgst -sha256 -hmac "hemlig-nyckel" -binary | openssl enc -base64 -A
Lösningen är alltså inte en autentiseringslösning och ska inte heller användas för att bestämma åtkomst till en resurs.
En lösning som skalar
Fördelen med att identiteten skapas baserat på att användaren finns i DIGG:s Community på Sveriges dataportal underlättar både för användaren och de myndigheter som tillhandahåller öppna data. Användaren kan skapa ett konto med tillhörande “nyckel” för alla myndigheters API:er samtidigt som myndigheter inte behöver ha en egen kontohantering.
Införande
Arbetsförmedlinges plattform jobtechdev.se planerar att prova ovan koncept i Q2 och vi är väldigt intresserade av återkoppling.