Authorization Code Flow med OIDC
Implementera det säkra Authorization Code Flow, som med OIDC utökas med en ID Token tillsammans med access token.
Authorization Code Flow med OIDC är en gratis lektion i OAuth2 och OpenID Connect på djupet på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för OAuth2 och OpenID Connect på djupet, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i OAuth2 och OpenID Connect på djupet innehåller totalt 4 lektioner.
Introduktion till OIDC och Auth Code Flow
Välkommen! I den här lektionen kombinerar vi det säkra Authorization Code Flow från OAuth2 med OpenID Connect (OIDC). Det gör att en applikation inte bara kan få behörighet att komma åt resurser (OAuth2), utan också verifiera användarens identitet (OIDC).
Tänk på det som att samtidigt få både en nyckel till ett kassaskåp och ett giltigt id-kort för personen som håller i nyckeln!
Begära identitet med OIDC
När du använder Authorization Code Flow med OIDC börjar din applikation (klienten) med att skicka en auktoriseringsbegäran till Authorization Server. Den här begäran liknar en OAuth2-begäran men innehåller specifika OIDC-parametrar.
response_type=code: Anger att vi vill ha en Authorization Code.scope=openid ...: Innehåller framför allt scopetopenidför att ange att det rör sig om en OIDC-begäran.nonce: En unik sträng som förhindrar replay-attacker (valfri men rekommenderad).
Det nödvändiga scopet `openid`
Scopet openid är den magiska flaggan som talar om för Authorization Server att du gör en OpenID Connect-begäran och inte bara en vanlig OAuth2-begäran.
Om openid saknas i scopet för din begäran behandlar Authorization Server den som ett vanligt OAuth2-flöde och utfärdar inte någon ID Token.
Du kan kombinera openid med andra vanliga OAuth2-scopes, till exempel profile, email eller anpassade scopes.
Bortom `openid`: fler scopes
Även om openid är obligatoriskt kan andra OIDC-specifika scopes användas för att begära mer information om användaren:
profile: Åtkomst till standarduppgifter i profilen (namn, efternamn, kön, bild med mera).email: Åtkomst till användarens e-postadress och verifieringsstatus.address: Åtkomst till användarens postadress.phone: Åtkomst till användarens telefonnummer och verifieringsstatus.
Dessa claims inkluderas sedan i ID Token eller är åtkomliga via UserInfo Endpoint.
Användarens samtycke och kodbeviljande
När appen har skickat auktoriseringsbegäran omdirigeras användaren till Authorization Server. Användaren loggar in (om det behövs) och ombeds lämna samtycke till de scopes som appen har begärt.
Om användaren godkänner omdirigerar Authorization Server användaren tillbaka till appens registrerade redirect URI, där Authorization Code ingår i URL:ens frågeparametrar.
Tokenutväxlingen
Nu tar din applikation (som körs på en server för konfidentiella klienter) emot Authorization Code och byter den direkt med Authorization Servers token endpoint.
Det här är en back-channel-begäran, vilket innebär att den sker direkt mellan din server och Authorization Server, inte via användarens webbläsare.
Viktigt nog returnerar den här utväxlingen nu tre viktiga informationsdelar:
- Access Token
- Refresh Token (om den begärdes)
- ID Token
Vad är ID Token?
ID Token är en JSON Web Token (JWT) som innehåller claims om den autentiserade användaren. Den signeras av Authorization Server, vilket gör att din applikation kan verifiera att den är äkta.
Till skillnad från Access Token (som används för åtkomst till resurser) är ID Token särskilt avsedd för identitetsverifiering. Den talar om för din applikation *vem* användaren är, inte *vad* användaren får göra.
ID Token för identitet, Access Token för API
När din applikation har tagit emot tokens:
- ID Token: Du kan avkoda och validera ID Token för att bekräfta användarens identitet och hämta grundläggande profilinformation (claims). Detta används ofta för användarens inloggade sessioner.
- Access Token: Den här token används sedan för att göra begäranden till skyddade Resource Servers (API:er) för användarens räkning. Den ger åtkomst till specifika resurser utifrån de begärda scopena.
OIDC Auth Code Flow i praktiken
Här är en förenklad konceptuell bild av tokenutväxlingen på serversidan. I en riktig applikation skulle du använda ett OIDC-klientbibliotek.
public class OidcClientExample {
public static void main(String[] args) {
// 1. User is redirected to Auth Server
// Example URL:
// https://auth.example.com/oauth/authorize?
// response_type=code&
// client_id=my_app_id&
// scope=openid%20profile%20email&
// redirect_uri=https://my-app.com/callback&
// nonce=random_string
// 2. User grants consent, redirected back with code
String authCode = "some_long_authorization_code"; // From redirect URI
// 3. Exchange code for tokens (server-side POST request)
System.out.println("Exchanging Authorization Code for tokens...");
// This part would typically be handled by an HTTP client
// sending a POST request to the token endpoint.
// The response would contain:
// {
// "access_token": "...",
// "token_type": "Bearer",
// "expires_in": 3600,
// "refresh_token": "...",
// "id_token": "..." // The OIDC addition!
// }
System.out.println("Received Access Token, Refresh Token, and ID Token!");
System.out.println("ID Token contains user identity claims.");
}
}Test av OIDC Auth Code Flow
Föreställ dig en applikation som implementerar OpenID Connect Authorization Code Flow.
Vilken av följande parametrar är nödvändig i den inledande auktoriseringsbegäran för att säkerställa att en ID Token returneras?
Repetition av OIDC Auth Code Flow
Bra jobbat! Du har lärt dig hur det säkra Authorization Code Flow utökas med OpenID Connect för att tillhandahålla både auktorisering och identitet.
- Vi använder
response_type=codeoch inkluderar scopetopenid. - Authorization Server returnerar en Authorization Code.
- Koden byts mot en Access Token (för åtkomst till resurser) och en ID Token (för användarens identitet).
- ID Token är en JWT som innehåller användarclaims och signeras av Authorization Server.
Det här flödet rekommenderas starkt för konfidentiella klienter, till exempel webbapplikationer.
Lär dig OAuth2 och OpenID Connect på djupet med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Authorization Code Flow med OIDC” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen OAuth2 och OpenID Connect på djupet, inklusive ”Authorization Code Flow med OIDC”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i OAuth2 och OpenID Connect på djupet innehåller totalt 4 lektioner.
Vad lär jag mig i ”Authorization Code Flow med OIDC”?
Implementera det säkra Authorization Code Flow, som med OIDC utökas med en ID Token tillsammans med access token. Ni övar på OAuth2 och OpenID Connect på djupet med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig OAuth2 och OpenID Connect på djupet?
Du behöver inga förkunskaper. Utbildningen i OAuth2 och OpenID Connect på djupet på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Authorization Code Flow med OIDC”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här OAuth2 och OpenID Connect på djupet-lektionen?
Ja. Varje OAuth2 och OpenID Connect på djupet-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Authorization Code Flow med OIDC
- Implicit Flow med OIDC
- Hybrid Flow med OIDC
- Använd nonce för att förhindra replay