Yan yana
OAuthvsOpenID Connect
OAuth ile OpenID Connect arasındaki fark nedir?
Güncellendi 2 dk okuma6 fark
Kısaca
OAuth 2.0 ile uygulama access token'la kullanıcı adına API'ye erişir; OpenID Connect ise imzalı ID token'la kullanıcının kim olduğunu söyleyen bir katman ekler.
OAuth
OAuth, 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.
OAuth sayfasını okuOpenID Connect
OIDC
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 sayfasını okuOAuth ve OpenID Connect karşılaştırması
| Özellik | OAuth | OpenID Connect |
|---|---|---|
| Yanıtladığı soru | Bu uygulama neye erişebilir? | Kullanıcı kim? |
| Amaç | Yetkilendirme (authorization) | Kimlik doğrulama (authentication) |
| Ana token | API'ler için access token | ID token, imzalı bir JWT |
| Üzerine kurulduğu | Bağımsız bir çerçeve | OAuth 2.0 |
| Kullanıcı bilgisi | Standart değil | Standart bilgiler (claim) ve bir UserInfo uç noktası |
| Tipik kullanım | Uygulamaların kullanıcı adına API çağırması | Google ile giriş, tek oturum açma |
Fark, açıklamalı
OAuth "bu uygulama ne yapabilir?" sorusunu yanıtlar. Bir fotoğraf baskı servisinin Google Fotoğraflar'ınızı okumasına izin verdiğinizde OAuth, Google'ın ona parolanızı vermeden sınırlı kapsamlı (scope) bir access token çıkarmasını sağlar. Token API içindir ve uygulama sizin kim olduğunuzu öğrenmek zorunda değildir.
2014'te son hâli verilen OpenID Connect ise "bu kullanıcı kim?" sorusunu yanıtlar. OAuth 2.0 ile aynı akışları, genellikle PKCE ile authorization code akışını kullanır, ama kimlik sağlayıcı ayrıca bir ID token döndürür: belirli bir uygulama için çıkarılmış, kullanıcının benzersiz kimliği, e-postası ve adı gibi bilgileri içeren imzalı bir JWT. "Google ile giriş yap"ı ve Entra ID ile Okta gibi sağlayıcılarla kurumsal tek oturum açmayı çalıştıran budur.
Pratikte birlikte kullanılırlar. Bir uygulama kullanıcıyı OpenID Connect ile giriş yaptırır, kendi oturumunu oluşturur ve kullanıcı adına API'leri de çağırması gerekiyorsa aynı alışverişten gelen OAuth access token'ını kullanır. OpenID Connect kütüphaneleri keşfi, anahtar rotasyonunu ve token doğrulamayı üstlenir.
Sık yapılan bir yanlış, OAuth'un tek başına bir giriş protokolü olduğunu düşünmektir. Düz bir access token'ı kimlik kanıtı olarak kullanmak bilinen bir güvenlik hatasıdır, çünkü token farklı bir uygulamaya çıkarılmış olabilir. Kullanıcının kim olduğunu bilmeniz gerekiyorsa OpenID Connect kullanın ve ID token'ı doğrulayın.
Hangisini kullanmalısınız?
OAuth şu durumlarda doğru seçim:
- Bir uygulamanın başka bir servisteki kullanıcı verisine yetki devriyle erişmesi gerekiyor.
- API'leri kapsamlı access token'larla koruyorsunuz.
- Client credentials ile makineden makineye erişim.
OpenID Connect şu durumlarda doğru seçim:
- Kullanıcıları harici bir kimlik sağlayıcıyla giriş yaptırmanız gerekiyor.
- Uygulamalar arasında tek oturum açma istiyorsunuz.
- Kullanıcının kim olduğuna dair doğrulanmış bilgiye ihtiyacınız var.
Sık sorulan sorular
OpenID Connect ile OAuth aynı şey mi?
Hayır. OpenID Connect, OAuth 2.0 üzerine kuruludur ve kimlik doğrulamayı, ID token'ı ve standart kullanıcı bilgilerini ekler. Her OIDC akışı bir OAuth akışıdır, ama tersi doğru değildir.
Giriş için OAuth kullanabilir miyim?
Onun yerine OpenID Connect kullanın. Düz OAuth access token'ları uygulamanıza kimlik kanıtlamak için tasarlanmamıştır; onları böyle kullanmak gerçek güvenlik açıklarına yol açtı.
ID token ile access token arasındaki fark nedir?
ID token uygulamanıza kullanıcının kim olduğunu söyler ve uygulamanın okuması içindir. Access token ise istekleri yetkilendirmek için bir API'ye gönderilir ve o API içindir.