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.
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. Registrera din app längre ner. Du får ett client_id, och en hemlighet om appen körs på en server.
- 2. Skicka besökaren till xleed med appens id, adressen att komma tillbaka till och vad du vill veta.
- 3. Besökaren loggar in och godkänner. Sedan skickas hen tillbaka till din adress med en kod.
- 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
| Scope | Vad det är | Fält |
|---|---|---|
| openid | Att du är inloggad med ditt xleed-konto | sub (ett id som är unikt för din app), iss, aud, exp, iat, auth_time, nonce |
| profile | Ditt namn och din profilbild | name, picture, profile |
| Din e-postadress | email, email_verified | |
| hemort | Din hemort | hemort: { kommun, ort } |
| friends | Vilka av dina vänner som också använder appen | GET /api/v1/vanner: vänner som också använder appen |
| notify | Att 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.