Ana içeriğe geç

OpenID Connect

OIDC

Okunuşu
opın ay di kınekt
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/openid-connect

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

Sunucuda bir ID token'ı kontrol etmek (jose ile Node.js)javascript
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

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar