Vad är OIDC: Från varför vi behöver det till hur det fungerar
Lär dig vad OIDC är, varför det behövs och hur det fungerar. Upptäck hur OIDC utvidgar OAuth 2.0 för autentisering, förstå dess kärnkomponenter inklusive ID Tokens, scopes och userinfo endpoint.
YijunDeveloper
Sluta slösa veckor på användarautentisering
Lansera säkra appar snabbare med Logto. Integrera användarautentisering på några minuter och fokusera på din kärnprodukt.
OpenID Connect (OIDC) är ett identitetsautentiseringsprotokoll byggt ovanpå OAuth 2.0. Medan OAuth 2.0 endast tillhandahåller auktorisering, lägger OIDC till autentiseringsmöjligheter, vilket erbjuder en mer standardiserad lösning för användarauktorisering och autentiseringsscenarier.
Enkelt uttryckt: OIDC = Auktoriseringsprotokoll + Identitetsautentisering.
För att förstå varför OIDC behövs, låt oss först utforska kärnkoncepten och arbetsflödet i OAuth 2.0, samt dess begränsningar i praktiska tillämpningar. Genom att analysera specifika scenarier ser vi varför vi behöver OIDC över OAuth 2.0.
Nyckelkoncept och auktoriseringsflöde av OAuth 2.0#
OAuth 2.0 (Open Authorization) är ett auktoriseringsprotokoll som låter användarna ge tredje parts applikationer tillgång till sina resurser utan att dela sina inloggningsuppgifter som användarnamn och lösenord. Det involverar fyra huvudroller:
Resursägare: Användaren som äger resurserna
Resursserver: Servern som lagrar användarresurser
Klient: Tredjepartsapplikationen som begär åtkomst till användarresurser
Auktorisationsserver: Servern som verifierar användaridentitet och utfärdar åtkomsttoken
Ett typiskt OAuth 2.0-auktoriseringsflöde fungerar så här:
Som visas hanterar OAuth 2.0 huvudsakligen utfärdandet av åtkomsttoken för tredjepartsklienter att få tillgång till användarresurser.
OAuth 2.0-protokollet fokuserar endast på utfärdande av åtkomsttoken. Resursservern validerar dessa token och återger de auktoriserade resurserna. Resursservern känner dock inte till användarens identitet.
Detta var inte ett betydande problem i den tidiga internetmiljön.
Men när plattformar som Google, Facebook, Twitter och Github utvecklades började de erbjuda rika användarresurser som blev värdefulla för tredjepartsapplikationer.
Medan OAuth 2.0 är utmärkt för att auktorisera tredjepartstillgång till användarresurser, har det sina begränsningar. Ett vanligt scenario är: eftersom användarinformation också är en resurs, när tredjepartsapplikationer behöver tillgång till grundläggande användarinformation, återger olika plattformar (som Google, Facebook, Twitter) användarinformation i olika format, vilket skapar utmaningar för utvecklare.
OIDC:s autentiseringsprocess liknar OAuth 2.0, men eftersom OP kombinerar rollerna som Auktorisationsserver och Resursserver, återger det både en åtkomsttoken och en ID-token. ID-token innehåller användarens identitetsinformation, och RP kan verifiera användarens identitet genom att validera ID-token.
Ett typiskt arbetsflöde ser ut så här:
Detta standardiserar hur användarinformation erhålls över olika plattformar och eliminerar behovet för tredjepartsapplikationer att hantera plattformsspecifika skillnader.
När användare auktoriserar tredjepartsapplikationer, returnerar OP både en OAuth 2.0-åtkomsttoken och en JWT-format ID-token. Denna ID-token innehåller användarens identitetsinformation som användar-ID, användarnamn, e-post och avatar. RP kan bekräfta användarens identitet genom att validera ID-token.
Som en JWT innehåller ID-token standardiserade claims, inklusive dessa obligatoriska kärnclaims:
iss (Utgivare): Unik identifierare för OpenID-leverantören som utfärdar ID-token
sub (Ämne): Unik identifierare för användaren
aud (Publik): Identifierare för klientapplikationen som mottar ID-token
exp (Utgångstid): När ID-token går ut
iat (Utfärdad vid): När ID-token utfärdades
För detaljerad information om ID-tokens, se: ID-token.
UserInfo Endpoint är ett standardiserat HTTP API som tillhandahålls av OP för att få detaljer om autentiserade användare. Genom att skicka GET- eller POST-förfrågningar med en åtkomsttoken till denna endpoint kan du få användarinformation i JSON-format. Den returnerade datan inkluderar standardiserade fält som unikt användar-ID (sub), användarnamn (name), e-post och bild.
Processen för att skaffa userinfo följer samma mönster som att få åtkomst till skyddade resurser i OAuth 2.0. Vanligtvis är användarinformationen som erhålls från userinfo endpoint mer omfattande än vad som finns i ID-token, eftersom ID-token främst tjänar för identitetsautentisering och grundläggande användarinformation.
För detaljerad information om Userinfo endpoint, se: Userinfo endpoint.
Observera att den användarinformation du får från userinfo endpoint beror på de begärda scopes och behörigheter som beviljades under auktorisering.
Scopes i OIDC definierar vilken användarinformation RP kan få tillgång till. OIDC definierar standardscope, med scopen openid som obligatorisk i OIDC-autentiseringsflöden.
Vanliga standardscope inkluderar:
openid: Indikerar en OIDC-autentiseringsbegäran
profile: Grundläggande användarinformation som namn och avatar
email: Användarens e-postinformation
phone: Användarens telefonnummer
address: Användarens adressinformation
Olika scopes returnerar olika användarinformation. Till exempel, att begära openid profile email returnerar grundläggande användarinformation och e-post i ID-token och Userinfo, medan openid profile email phone address inkluderar telefonnummer och adressinformation också.
OIDC är inte bara ett autentiseringsprotokoll; det är ett kraftfullt verktyg för att bygga flexibla, skalbara identitetshanteringssystem. Genom att lägga till ett autentiseringslager till OAuth 2.0, standardisera användarinformationsresurser, och lägga grunden för förlängda identitetshanteringsfunktioner, möjliggör OIDC olika identitetshanteringsscenarier:
Single Sign-On (SSO): OIDC stödjer naturligt SSO genom förlängd användarsessionsinformation, vilket möjliggör enhetlig hantering av inloggningsstatus och delning av identiteter över applikationer
Organisationstrukturshantering: Förlängd användarorganisationsinformation kan hantera komplexa organisationsstrukturer, inklusive avdelningshierarkier och användargruppsrelationer
Behörighetshantering: Förlängda användarbehörighetsattribut möjliggör detaljerad kontroll av resursåtkomst, inklusive rollinformation och behörighetspolicykonfiguration
OIDC:s flexibilitet anpassar sig till föränderliga behov av identitetshantering. Många identitetshanteringssystem är byggda på OIDC, som Logto, som erbjuder SSO, organisationshantering och behörighetshanteringsfunktioner.