OpenID Connect-autentisering med Microsoft Entra ID
Bakgrund
Under mina studier inför SC-300 har jag stött på begrepp som OpenID Connect (OIDC), OAuth 2.0, ID Tokens och Access Tokens många gånger.
Jag förstod teorin på en övergripande nivå, men ville se hur autentiseringsflödet faktiskt fungerar i praktiken.
Målet med projektet var att bygga en enkel applikation som autentiserar användare via Microsoft Entra ID och använder Microsoft Graph för att hämta information om den inloggade användaren.
Projektets omfattning
Syftet med projektet var att lära mig Identity and Access Management (IAM) och moderna autentiseringsflöden – inte att utveckla en produktionsfärdig applikation.
Jag använde AI-stöd för delar av Flask-applikationen för att kunna fokusera på identitetsrelaterade koncept som OpenID Connect, OAuth 2.0, Authorization Code Flow, tokenhantering och integration med Microsoft Entra ID.
Fokus låg på att förstå hur komponenterna samverkar, snarare än på programmeringsspråket i sig.
Mål
- Förstå OpenID Connect i praktiken
- Förstå OAuth 2.0 och auktorisering
- Registrera och konfigurera en applikation i Microsoft Entra ID
- Implementera Authorization Code Flow
- Utforska ID Tokens och Access Tokens
- Integrera med Microsoft Graph
- Förstå hur Single Sign-On (SSO) fungerar
Arkitektur
Användare
↓
Webbapplikation (Flask)
↓
Microsoft Entra ID
↓
Authorization Code Flow
↓
ID Token + Access Token
↓
Microsoft Graph API
Tekniker
- Microsoft Entra ID
- OpenID Connect (OIDC)
- OAuth 2.0
- Authorization Code Flow
- Microsoft Graph API
- Python Flask
- Microsoft Authentication Library (MSAL)
Genomförande
En App Registration skapades i Microsoft Entra ID.
Applikationen konfigurerades med:
- Redirect URI
- Client ID
- Client Secret
När användaren öppnar applikationen skickas denne vidare till Microsoft Entra ID för autentisering.
Efter lyckad inloggning returnerar Entra ID en authorization code till applikationen.
Applikationen använder sedan koden för att hämta:
- En ID Token
- En Access Token
ID-token används för att identifiera användaren, medan Access-token används för att få åtkomst till skyddade resurser.
I projektet användes Access-token för att anropa Microsoft Graph och hämta information om den inloggade användaren.
Viktiga lärdomar
OpenID Connect i praktiken
Innan projektet såg jag främst OpenID Connect som ett teoretiskt begrepp.
Genom att implementera flödet blev det tydligare att OpenID Connect inte är en applikation eller tjänst i sig, utan ett protokoll som används mellan en applikation och en identitetsleverantör.
Applikationen överlåter autentiseringen till Microsoft Entra ID och får sedan tillbaka en ID-token som innehåller information om den autentiserade användaren.
Skillnaden mellan ID Token och Access Token
Den största lärdomen från projektet var att förstå skillnaden mellan dessa två typer av tokens.
ID Token
Används av applikationen för att identifiera användaren. Besvarar frågan: Vem är användaren?
Exempel på information som kan finnas i tokenen:
- Namn
- Användaridentitet
- Tenant-ID
- Objekt-ID
Access Token
Används för att få åtkomst till API:er och andra skyddade resurser. Besvarar frågan: Vad får användaren göra?
I detta projekt användes Access-token för att anropa Microsoft Graph med behörigheten User.Read.
Microsoft Graph
Med hjälp av Access-token anropades:
GET https://graph.microsoft.com/v1.0/me
Anropet returnerade information om den inloggade användaren och visade hur OAuth 2.0 används för att ge säker åtkomst till resurser utan att applikationen behöver hantera användarens lösenord.
Single Sign-On (SSO)
Projektet gav också en bättre förståelse för hur Single Sign-On fungerar.
Även efter att applikationens lokala session rensades kunde användaren logga in igen utan att ange lösenord, eftersom sessionen hos Microsoft Entra ID fortfarande var aktiv.
Detta tydliggjorde skillnaden mellan:
- Applikationens session
- Identitetsleverantörens session

Slutsats
Det här projektet hjälpte mig att gå från teori till praktik.
Genom att bygga en fungerande integration mellan en webbapplikation, Microsoft Entra ID och Microsoft Graph fick jag en betydligt bättre förståelse för OpenID Connect, OAuth 2.0, Authorization Code Flow och tokenbaserad autentisering.
Den viktigaste insikten var att se skillnaden mellan autentisering och auktorisering i ett verkligt flöde, samt att förstå vilken roll ID Tokens och Access Tokens spelar i modern identitetshantering.