OpenID Connect
OIDC
- Okunuşu
- opın ay di kınekt
Kısaca
OpenID Connect (OIDC), OAuth 2.0 üzerine kurulu bir kimlik katmanıdır: uygulama, kullanıcıyı kimlik sağlayıcıyla oturum açtırıp imzalı bir ID token alır.
OpenID Connect nedir?
OAuth 2.0 yetkilendirme (authorization) için tasarlandı: bir uygulamanın bir kullanıcı adına bir API'ye erişmesine izin vermek için. Birçok site onu giriş için kullanmaya başladı; her biri kendine özgü, biraz farklı ve çoğu zaman güvensiz bir şekilde. OpenID Foundation tarafından 2014'te son hâli verilen OpenID Connect bunu standartlaştırdı: kimlik sağlayıcı, access token'ın yanında bir ID token, yani kullanıcının benzersiz kimliği, adı ve e-postası gibi bilgileri (claim) içeren imzalı bir JWT de çıkarır.
Olağan akış, PKCE ile authorization code akışıdır. Uygulama kullanıcıyı sağlayıcıya yönlendirir, kullanıcı orada giriş yapar, sağlayıcı da tek kullanımlık bir kodla geri yönlendirir. Uygulamanın sunucusu kodu token'larla değiştirir, ID token'ın imzasını, yayıncısını (issuer), hedef kitlesini (audience) ve süresini doğrular, ardından kullanıcı için kendi oturumunu oluşturur.
Sağlayıcılar ayarlarını, uç noktaları ve token'ları imzalamak için kullanılan açık anahtarlar dahil, /.well-known/openid-configuration adlı bir keşif adresinde yayımlar; böylece kütüphaneler kendilerini yapılandırabilir. "Google ile giriş yap", "Apple ile giriş yap", Microsoft Entra ID, Okta, Auth0 ve Keycloak'un hepsi OpenID Connect konuşur.
Sık yapılan bir yanlış, OAuth ile OpenID Connect'in aynı şey olduğunu düşünmektir. OAuth bir uygulamanın neye erişebileceği sorusunu, OpenID Connect ise kullanıcının kim olduğu sorusunu yanıtlar. Düz bir OAuth access token'ını kimlik kanıtı olarak kullanmak klasik bir hatadır, çünkü token sizin uygulamanız için çıkarılmamış olabilir.
Önemli noktalar
- OpenID Connect, OAuth 2.0'ın üzerine kimlik doğrulama ekler.
- Sağlayıcı, kullanıcıyı anlatan imzalı bir ID token (bir JWT) çıkarır.
- Uygulamalar PKCE ile authorization code akışını kullanır.
- Keşif dokümanları uç noktaları ve imzalama anahtarlarını yayımlar.
- OAuth erişim içindir; OIDC kimlik içindir.
Örnek
import { createRemoteJWKSet, jwtVerify } from "jose";
const issuer = "https://accounts.google.com";
const keys = createRemoteJWKSet(new URL("https://www.googleapis.com/oauth2/v3/certs"));
export async function verifyIdToken(idToken) {
const { payload } = await jwtVerify(idToken, keys, {
issuer,
audience: process.env.GOOGLE_CLIENT_ID, // the token must be meant for this app
});
// payload.sub is the user's stable ID; payload.email and payload.name describe them
return { userId: payload.sub, email: payload.email };
}Sık sorulan sorular
OAuth ile OpenID Connect arasındaki fark nedir?
OAuth 2.0, uygulamalara API'ler için access token veren bir yetkilendirme çerçevesidir. OpenID Connect ise onun üzerine kurularak kimlik doğrulama sağlar; uygulamaların kullanıcıları giriş yaptırabilmesi için ID token'ı ve standart kullanıcı bilgilerini ekler.
ID token nedir?
Kimlik sağlayıcının çıkardığı, kullanıcının kim olduğunu, hangi uygulama için ve ne zamana kadar geçerli olduğunu belirten bir JWT'dir. Uygulama ona güvenmeden önce imzasını ve bilgilerini doğrulamalıdır.
OpenID Connect ile SAML arasındaki fark nedir?
İkisi de tek oturum açma (SSO) sağlar. SAML daha eskidir, XML tabanlıdır ve kurumsal web uygulamalarında yaygındır. OpenID Connect ise JSON ve JWT tabanlıdır, mobil uygulamalar ve API'ler için daha basittir ve yeni uygulamalarda olağan seçimdir.
Sık karşılaştırılanlar
İlgili sayfalar
- OAuthGüvenlik, s. 21OAuth, bir uygulamanın kullanıcının parolasını hiç görmeden başka bir servisteki verilerine erişmesini sağlayan açık bir yetkilendirme standardıdır.
- JWTGüvenlik, s. 17JWT, kullanıcı kimliği ve son kullanma zamanı gibi bilgileri taşıyan, imzalı ve kompakt bir token'dır; sunucunun oturum aramadan istekleri doğrulamasını sağlar.
- SSOGüvenlik, s. 40SSO, kullanıcının merkezi bir kimlik sağlayıcıyla bir kez oturum açıp birçok ayrı uygulamaya yeniden kimlik bilgisi girmeden erişmesini sağlar.
- Kimlik DoğrulamaGüvenlik, s. 19Kimlik doğrulama, bir kullanıcının, cihazın veya servisin gerçekten iddia ettiği kişi olduğunu, örneğin parola ya da passkey kontrol ederek doğrulama işlemidir.
- SAMLGüvenlik, s. 33SAML, XML tabanlı bir tek oturum açma (SSO) standardıdır: kimlik sağlayıcı kullanıcıyı doğrular ve uygulamaya onu giriş yaptıran imzalı bir beyan gönderir.
- PasskeyGüvenlik, s. 26Passkey, açık anahtarlı kriptografiye dayanan, parmak izi, yüz taraması ya da cihaz PIN'iyle açılan, phishing'e dayanıklı parolasız giriş kimlik bilgisidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin