Hoppa till innehållet
xleed

Logga in med xleed

Låt besökarna på din sajt eller i din app logga in med sitt xleed-konto, i stället för att skapa ett nytt. Du får deras namn och profilbild, och e-post och hemort om de godkänner det. Lösenordet stannar alltid hos xleed. Det kostar ingenting.

Knappen Logga in med xleed

Så fungerar det

Det är vanlig OAuth 2.0 med OpenID Connect, med koder och PKCE. De flesta ramverk och tillägg för inloggning klarar det med adressen till vår konfiguration.

  1. 1. Registrera din app längre ner. Du får ett client_id, och en hemlighet om appen körs på en server.
  2. 2. Skicka besökaren till xleed med appens id, adressen att komma tillbaka till och vad du vill veta.
  3. 3. Besökaren loggar in och godkänner. Sedan skickas hen tillbaka till din adress med en kod.
  4. 4. Byt koden mot nycklar på din server. Du får ett id_token med uppgifterna, och en åtkomstnyckel för userinfo.

Adresserna

Konfiguration (discovery)
https://xleed.se/.well-known/openid-configuration
Issuer
https://xleed.se
Inloggning
https://xleed.se/oauth/authorize
Nycklar (token)
https://xleed.se/oauth/token
Uppgifter (userinfo)
https://xleed.se/oauth/userinfo
Återkalla
https://xleed.se/oauth/revoke
Publika nycklar (JWKS)
https://xleed.se/oauth/jwks
  • Bara response_type=code. PKCE med S256 krävs för appar utan hemlighet och rekommenderas för alla.
  • Åtkomstnyckeln gäller en timme. Förnyelsenyckeln gäller i 30 dagar och byts varje gång den används.
  • id_token signeras med RS256. Kontrollera signaturen mot JWKS, och att aud är ditt client_id.
  • Adressen att komma tillbaka till måste stämma exakt med en registrerad adress.
  • Utloggning (OpenID Connect Back-Channel Logout): ange en adress för utloggning på appen. När en medlem tar bort appens åtkomst, eller kontot stängs av eller tas bort, skickar xleed en POST dit med fältet logout_token, en JWT signerad som id_token (typ logout+jwt) med iss, aud, iat, exp, jti, sub och events. Kontrollera signaturen och aud, logga ut den med det sub och glöm nycklarna, och svara 200. Annars försöker xleed igen några gånger.

Det din app kan få veta

ScopeVad det ärFält
openidAtt du är inloggad med ditt xleed-kontosub (ett id som är unikt för din app), iss, aud, exp, iat, auth_time, nonce
profileDitt namn och din profilbildname, picture, profile
emailDin e-postadressemail, email_verified
hemortDin hemorthemort: { kommun, ort }
friendsVilka av dina vänner som också använder appenGET /api/v1/vanner: vänner som också använder appen
notifyAtt skicka notiser till dig på xleed (högst några om dagen)POST /api/v1/notiser: notiser till medlemmen

Namn och profilbild ingår alltid. Varje app får ett eget sub för samma medlem, så att två appar inte kan se att det är samma person.

Exempel

Skicka besökaren hit

https://xleed.se/oauth/authorize?response_type=code&client_id=DITT_CLIENT_ID&redirect_uri=https%3A%2F%2Fdinsajt.se%2Fxleed%2Fretur&scope=openid%20profile%20email&state=SLUMPAT&nonce=SLUMPAT&code_challenge=PKCE_CHALLENGE&code_challenge_method=S256

Byt koden mot nycklar, på servern

curl -u DITT_CLIENT_ID:DIN_HEMLIGHET https://xleed.se/oauth/token \
  -d grant_type=authorization_code \
  -d code=KODEN_DU_FICK \
  -d redirect_uri=https://dinsajt.se/xleed/retur \
  -d code_verifier=PKCE_VERIFIER

Hämta uppgifterna

curl -H "Authorization: Bearer ACCESS_TOKEN" https://xleed.se/oauth/userinfo

Appar och spel inne i xleed

Katalogen. En granskad app finns på xleed.se/appar. På appens sida visas din "sida som visas inne i xleed" i en avskärmad ruta, med xleeds meny runt. Tillåt det med Content-Security-Policy: frame-ancestors https://xleed.se.

Inloggning i rutan. Skicka besökaren till inloggningen som vanligt, gärna med prompt=none först: är medlemmen redan inloggad på xleed och har godkänt appen kommer koden tillbaka direkt, utan att något visas. Webbläsare kan stoppa kakor från en annan sajt i en inbäddad ruta. Ligger appen på en underdomän till xleed.se fungerar kakor som vanligt; annars, spara inloggningen i rutans egen sessionStorage eller använd kakor med Partitioned.

Vänner och notiser. Be om friends och notify i scope. Vänner visas bara om de själva använder appen. Notiser: högst några per medlem och dygn, och länken ska gå till din app. Notisen öppnar appen inne i xleed.

Dela till flödet. Skicka medlemmen till delningsrutan. Medlemmen ser inlägget, väljer vilka som ser det och trycker Dela. Appen kan aldrig dela något själv.

Köp i appen. Bara för xleeds egna appar än så länge. Appens server skapar köpet med POST /api/v1/kop (client_id och hemlighet) och skickar medlemmen till betal_url i hela fönstret. Medlemmen godkänner och betalar på xleed. Appen får en POST med kop_token, en JWT signerad som id_token (typ purchase+jwt), när köpet är betalt eller återbetalt, och kan fråga GET /api/v1/kop/{kop_id}. Testläge finns för att prova utan riktiga pengar.

Prenumerationer. Samma sak med POST /api/v1/prenumerationer och intervall månad eller år. Stripe drar beloppet varje period. Appen får pren_token (typ subscription+jwt) när prenumerationen börjar, förnyas, inte gick att dra, sägs upp eller tar slut, kan fråga GET /api/v1/prenumerationer/{pren_id} och säga upp med POST /api/v1/prenumerationer/{pren_id}/avsluta. Medlemmen kan alltid säga upp på xleed.

Vänner som också använder appen

curl -H "Authorization: Bearer ACCESS_TOKEN" https://xleed.se/api/v1/vanner

Skicka en notis

curl -H "Authorization: Bearer ACCESS_TOKEN" https://xleed.se/api/v1/notiser \
  -d title="Dina tomater är klara" \
  -d text="Skörda innan de vissnar." \
  -d url=https://dinapp.se/gard

Öppna delningsrutan

https://xleed.se/appar/dela?app=DITT_CLIENT_ID&text=Jag%20n%C3%A5dde%20niv%C3%A5%205!&url=https%3A%2F%2Fdinapp.se%2F

Knappen

Använd gärna vår knapp, så att besökarna känner igen den. Låt den leda till din egen adress som startar inloggningen.

<a href="https://dinsajt.se/logga-in/xleed"><img src="https://xleed.se/badge/logga-in-med-xleed.svg" alt="Logga in med xleed" width="232" height="48"></a>

Dina appar

Logga in för att registrera en app.

Regler

Använd uppgifterna bara för inloggningen och det medlemmen har bett om. Sälj dem inte och skicka inte reklam till e-postadressen utan medlemmens samtycke. Visa vem du är och hur du hanterar uppgifterna, gärna med en integritetspolicy. Vi spärrar appar som missbrukar inloggningen.