OpenID Connect (OIDC)
Også kendt som: OIDC
En loginstandard bygget oven på OAuth, der fortæller en app, hvem brugeren er, og ikke kun hvad den må.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
Et identitetslag oven på OAuth 2.0, hvor identitetsudbyderen, når brugeren er logget ind, returnerer et signeret ID-token med oplysninger om, hvem brugeren er, og hvornår og hvordan vedkommende loggede ind. Appen kontrollerer tokenet, før den starter sin egen session.
Forklaret enkelt
Som en parkeringsnøgle, der udleveres sammen med et underskrevet navneskilt - nøglen siger, hvad indehaveren må gøre med bilen, skiltet siger, hvem indehaveren er.
I praksis
En lille dansk webshop tilbyder “Log ind med Google”; shoppen modtager et signeret token med kundens navn og mailadresse og håndterer aldrig selv en adgangskode.
Hvorfor det betyder noget
At bruge OAuth alene til login førte til alvorlige fejl; en fælles, kontrolleret måde at angive identitet på lader små apps tilbyde sikkert login og single sign-on uden at bygge deres eget.
Teknisk uddybning
OpenID Connect Core 1.0 blev færdiggjort af OpenID Foundation i februar 2014 og afløste det tidligere, inkompatible OpenID 2.0. Det er en profil af OAuth 2.0: En klient beder om scopet openid, og udbyderen returnerer et ID-token ved siden af det sædvanlige adgangstoken. Tilhørende specifikationer dækker Discovery (dokumentet /.well-known/openid-configuration), Dynamic Client Registration og flere logud-mekanismer. I 2024 blev Core og otte beslægtede specifikationer udgivet som internationale standarder, ISO/IEC 26131 til 26139, hvor Core indeholder errata set 2.
ID-tokenet er et JWT, der er signeret med JWS (og eventuelt også krypteret). Core §2 kræver claims som iss (udsteder), sub (subjekt-id, lokalt unikt hos udstederen og højst 255 ASCII-tegn), aud (som skal indeholde client_id), exp og iat og definerer auth_time, nonce, acr (autentificeringskontekstklasse), amr (autentificeringsmetoder) og azp (autoriseret part). Validering efter §3.1.3.7 betyder at kontrollere, at iss præcist svarer til den forventede udsteder, at aud indeholder klienten, at signaturen kan verificeres med en nøgle fra udbyderens JWKS med den forventede algoritme, at tokenet ikke er udløbet, og at nonce svarer til den, klienten sendte. Den eneste stabile brugernøgle er parret iss og sub; email og preferred_username kan ændre sig, og et mail-claim er ikke bevis for ejerskab, medmindre email_verified er sand, og udbyderen er autoritativ for domænet.
Der er defineret tre flows: authorization code (response_type=code), implicit (id_token eller id_token token) og hybrid (fx code id_token). Nuværende praksis, som også afspejles i OAuth's sikkerheds-BCP, er code-flowet med PKCE for alle klienttyper, hvor ID-tokenet hentes fra token-endpointet. Forespørgselsparametre giver relying partyen kontrol: prompt=login og max_age tvinger genautentificering, og acr_values beder om et bestemt sikringsniveau, som RP'en derefter skal kontrollere i det returnerede acr-claim i stedet for at antage det. Profiler som FAPI 2.0 strammer reglerne for open banking og lignende API'er med høj risiko.
Typiske implementeringsfejl er at acceptere et OAuth-adgangstoken som bevis for login, at springe kontrol af audience eller udsteder over (især på multi-tenant-endpoints, hvor også tenant-claimet skal valideres), at udelade nonce og algoritmeforveksling, hvor et bibliotek accepterer alg "none" eller verificerer et RS256-token som HS256 med den offentlige nøgle som HMAC-hemmelighed. Logud er det svage punkt: RP-Initiated, Front-Channel og Back-Channel Logout findes, men browsernes blokering af tredjepartscookies ødelægger iframe-baserede sessionstjek og front-channel-logud, så back-channel-logud-tokens er det mere pålidelige valg. Sammenlignet med SAML bruger OIDC kompakt JSON og JWT'er over simple redirects og passer bedre til single-page-apps, mobil og API'er, mens SAML fortsat står stærkt i virksomheders SaaS.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
Relationer
- Forudsætter
- OAuthIdentitetsudbyder
- Implementerer
- AutentificeringIdentitetsføderation
- Alternativ til
- SAML
Kilder og videre læsning
Standarder og officielle tekster
- OpenID Connect Core 1.0 · OpenID Foundation
- ISO/IEC 26131:2024 - OpenID Connect Core 1.0 incorporating errata set 2 · ISO/IEC
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…