Koppla din sajt till Aegis Central ID

Aegis är en identitetsleverantör som talar OpenID Connect (OIDC). Din sajt skickar användaren till oss, vi sköter lösenord och tvåfaktor, och skickar tillbaka användaren till din sajt med ett bevis på vem hen är.

Du behöver inte skriva någon inloggningskod. Du behöver tre saker:

Vad Varifrån Exempel
Ett klient-id Vi ger dig det, steg 1 mixx-ailearn
En callback-adress Du bestämmer den själv, steg 2 https://din-sajt.se/callback
Ett OIDC-bibliotek Finns redan i din stack, steg 3 Microsoft.AspNetCore.Authentication.OpenIdConnect

Räkna med tjugo minuter första gången. Har du en AI-assistent kan den göra kodningen åt dig — se Låt din AI göra det.

Vad du slipper bygga

Lösenordshantering, tvåfaktor, kontoåterställning, kontospärr, sessionshantering och granskningslogg. Det sker hos oss. Din applikation ser aldrig ett lösenord — bara resultatet av inloggningen.

Steg 1 — skapa en klient och hämta ditt klient-id

En klient är vad vi kallar din sajt. Den skapas i din arbetsyta:

  1. Registrera ett konto på login.aegiscentralid.se/account/register och bekräfta e-postadressen. Sätt upp tvåfaktor när du blir ombedd — det är obligatoriskt för alla.
  2. Skapa en arbetsyta på login.aegiscentralid.se/workspace/new. Det är ditt företag eller projekt; den kan ha flera klienter och flera administratörer. Namnet blir första halvan av ditt klient-id.
  3. Gå till Klienter — adressen är login.aegiscentralid.se/workspace/clients — och fäll ut Ny klient.
  4. Fyll i:
    • Namn — vad användaren ser när hen loggar in, till exempel AiLearn.
    • Callback-adresser — se steg 2. Du kan fylla i den nu eller lägga till den senare med Redigera.
    • Scopes — låt förvalet stå. profile, email och tenant.role är ibockade, och det är precis vad kodexemplen begär.
    • Publik klient — lämna urbockad om din sajt har en server (ASP.NET Core, Node, PHP, Python …). Bocka i bara för en ren webbsida utan backend eller en mobilapp.
  5. Klicka Skapa klient.

Nu visas en ruta med rubriken Spara de här uppgifterna nu:

  • CLIENT_ID — ditt klient-id. Det byggs av arbetsytans namn och klientens namn, till exempel mixx-ailearn. Det är inte hemligt och det syns alltid i klientlistan efteråt.
  • CLIENT_SECRET — klienthemligheten. Den visas en enda gång. Kopiera den till ett säkert ställe direkt. Tappar du bort den klickar du Byt hemlighet på klienten och får en ny — men då slutar alla befintliga inloggningar via den klienten att gälla.

I resten av dokumentationen står DITT-CLIENT-ID och DIN-CLIENT-SECRET där de här två värdena ska in.

Steg 2 — bestäm din callback-adress

Det här är steget flest fastnar på, så här är det i klartext:

Callback-adressen är en sida på din egen sajt som inte finns än. Efter att användaren loggat in hos oss skickar vi hen tillbaka dit. Du behöver inte bygga sidan — OIDC-biblioteket i steg 3 skapar den själv när du talar om vilken adress det ska lyssna på. Du väljer bara namnet.

Välj den sökväg ditt ramverk redan förväntar sig, så slipper du konfigurera om:

Din stack Callback-adress att registrera
ASP.NET Core https://din-sajt.se/signin-oidc (förvalet) eller valfritt, t.ex. https://din-sajt.se/callback
Node med openid-client https://din-sajt.se/callback
PHP med openid-connect-php https://din-sajt.se/callback.php
Python med Authlib https://din-sajt.se/callback
Ren webbsida med embed.js https://din-sajt.se/callback

Byt din-sajt.se mot din riktiga domän. Samma sträng ska sedan stå på tre ställen och vara identisk på alla tre:

  1. I klientens Callback-adresser hos oss (steg 1, eller via Redigera).
  2. I din konfiguration, som CallbackPath / redirect_uri — se kodexemplen.
  3. I det anrop din sajt gör när inloggningen startar. Biblioteket sköter det åt dig utifrån punkt 2.

Adressen måste matcha exakt, tecken för tecken: https, domän, sökväg, skiftläge, och med eller utan avslutande snedstreck. …/callback och …/callback/ är två olika adresser. Vi godtar inga jokertecken — det är avsiktligt, eftersom slarvig matchning är den vanligaste vägen in i en OIDC-integration.

Ska du utveckla lokalt lägger du till en rad till i klienten, till exempel http://localhost:5046/callback. localhost är det enda som får använda http.

Steg 3 — installera OIDC-biblioteket

Du behöver inget bibliotek från oss. Varje stack har redan ett standardbibliotek för OpenID Connect; det är det du ska använda.

Din stack Paket Installera med
ASP.NET Core Microsoft.AspNetCore.Authentication.OpenIdConnect dotnet add package Microsoft.AspNetCore.Authentication.OpenIdConnect
Node openid-client npm i openid-client
PHP jumbojett/openid-connect-php composer require jumbojett/openid-connect-php
Python authlib pip install authlib
Ren webbsida embed.js från oss <script src="https://login.aegiscentralid.se/embed.js"> — inget att installera

Biblioteket behöver veta var vi finns. Det talar du om med en enda adress, som i konfigurationen heter Authority, issuer eller server_metadata_url beroende på bibliotek:

https://login.aegiscentralid.se/

Från den adressen hämtar biblioteket självt vårt upptäcktsdokument (/.well-known/openid-configuration) med alla ändpunkter och publika nycklar. Du behöver aldrig skriva in de adresserna för hand.

Steg 4 — lägg in konfigurationen

Kopiera exemplet för din stack från Kodexempel och byt ut tre värden:

I exemplet står Byt mot
DITT-CLIENT-ID CLIENT_ID från steg 1
DIN-CLIENT-SECRET CLIENT_SECRET från steg 1 — via miljövariabel eller User Secrets, aldrig i koden
https://din-sajt.se/callback din callback-adress från steg 2

Allt annat i exemplen kan stå som det står.

Bygger du på ASP.NET Core finns en genomgång rad för rad, inklusive fallen där sajten redan har ASP.NET Core Identity eller en egen kakinloggning, i ASP.NET Core steg för steg.

Steg 5 — prova

Starta sajten och klicka på inloggningsknappen. Så här ska det se ut:

  1. Webbläsaren hoppar till login.aegiscentralid.se. Sidan visar din klients namn.
  2. Du loggar in med ditt Aegis-konto, anger engångskoden, och godkänner att din sajt får se ditt namn och din e-post (bara första gången).
  3. Webbläsaren hoppar tillbaka till din callback-adress, och därifrån vidare till din startsida — inloggad.

Blir det fel visas felet på vår sida om det är hos oss (till exempel att callback-adressen inte matchar), och i ditt biblioteks logg om det är hos dig. Varje fel du kan få står förklarat i Felsökning.

Om din sajt står bakom en omvänd proxy

Kör du Nginx, Nginx Proxy Manager, Traefik, Cloudflare eller liknande framför sajten — alltså att TLS avslutas någon annanstans än i din applikation — gäller två saker som annars ger obegripliga fel:

  • Applikationen måste lita på proxyns X-Forwarded-*-huvuden. Annars tror den att den kör på http://, bygger callback-adressen fel, och vi svarar att redirect-adressen inte matchar. I ASP.NET Core: UseForwardedHeaders med proxyns adress i KnownProxies.
  • Spara inte tokens i kakan. ASP.NET Cores SaveTokens = true lägger id-token och access token i inloggningskakan, som då blir större än de 4 kB många proxyer buffrar. Resultatet är en 502 direkt efter callbacken. Sätt SaveTokens = false om du inte ska anropa ett API med token efteråt.

Vad du får tillbaka

Efter lyckad inloggning får din applikation tre saker:

Token Vad den är till för
ID-token Vem användaren är. Biblioteket läser den, verifierar signaturen och skapar din sajts egen session.
Access token Skickas med när din applikation anropar ett API som litar på Aegis.
Refresh token Hämtar nya tokens utan att användaren behöver logga in igen. Kräver scopet offline_access.

ID-token innehåller bland annat användarens namn, e-postadress, vilken arbetsyta hen valt och vilken roll hen har där. Se Scopes och anspråk.

Använd sub som nyckel i din egen databas, inte e-postadressen. sub är användarens permanenta id och ändras aldrig; adressen kan bytas.