OpenID Connect: nedir, kimlik doğrulama ve yetkilendirme protokolü

Yazar: IT Sectr Yayınlanma: 2026-04-05 Okuma süresi: 9 dk

OpenID Connect, OAuth 2.0 üzerine inşa edilmiş ve standart yetkilendirmeye kullanıcı kimlik doğrulama katmanı ekleyen bir kimlik doğrulama protokolüdür. Access token'ın kullanıcı bilgisi olmadan kaynaklara erişim sağladığı saf OAuth 2.0'ın aksine, OpenID Connect bir ID Token — doğrulanmış profil verilerine sahip bir JWT — döndürür. OpenID Foundation, 2026'ya göre, protokol tüm büyük Identity Provider'lar — Google, Apple, Microsoft ve Auth0 — tarafından desteklenmektedir.

Önemli Noktalar

  • OpenID Connect — OAuth 2.0 üzerinde ID Token döndüren kimlik doğrulama protokolü
  • ID Token — kullanıcı taleplerini içeren JWT: tanımlayıcı, e-posta, ad, avatar
  • Authorization Code Flow — mobil ve sunucu uygulamaları için ana OIDC akışı
  • Single Sign-On — kullanıcı bir Identity Provider üzerinden bir kez giriş yapar ve bağlı tüm uygulamalara erişim sağlar
  • Discovery URL — sağlayıcı yapılandırmasını almak için standart uç nokta /.well-known/openid-configuration

OpenID Connect Nedir?

OpenID Connect (OIDC), OAuth 2.0 üzerine bir uzantı olarak inşa edilmiş açık bir kimlik doğrulama protokolüdür. OAuth 2.0'da eksik olanı — kullanıcı kimlik doğrulamasını — standartlaştırır. OAuth 2.0 “hangi uygulamanın erişimi var?” sorusunu yanıtlıyorsa, OIDC “bu kullanıcı tam olarak kim?” sorusunu yanıtlar.

Protokol bir ID Token — bir dizi talep (benzersiz özne tanımlayıcısı, e-posta, ad, avatar, yayın ve son kullanma zaman damgaları) içeren bir JSON Web Token (JWT) — kullanır. İstemci uygulaması, ID Token'ı kriptografik olarak doğrulayabilir — sunucu, RS256 veya ES256 kullanarak token'ı imzalar ve istemci, JWKS uç noktasından alınan genel anahtarla imzayı kontrol eder.

Auth0, 2025'e göre, üçüncü taraf kimlik doğrulama kullanan mobil uygulamaların %78'inden fazlası, Google Sign-In veya Sign in with Apple aracılığıyla OIDC kullanmaktadır. Bu, protokolü sosyal giriş ve kurumsal kimlik doğrulama için fiili standart haline getirmektedir.

OpenID Connect Nasıl Çalışır

OpenID Connect, istemci türüne bağlı olarak birkaç akış (flow) tanımlar. Mobil uygulamalar için standart, Proof Key for Code Exchange (PKCE) ile Authorization Code Flow'dur — cihazda client secret olmadan bile güvenlik sağlar.

Identity Provider ve Rolü

Identity Provider (IdP), kullanıcıların kimliğini doğrulayan ve token yayınlayan bir sunucudur. OIDC ekosisteminde IdP iki temel uç nokta sağlar: kullanıcı girişi için Authorization Endpoint ve kodu token'larla değiştirmek için Token Endpoint. İstemci, bu uç noktaların adreslerini Discovery URL — standart yol /.well-known/openid-configuration — aracılığıyla keşfeder ve bu, tam sağlayıcı yapılandırmasıyla bir JSON belgesi döndürür.

Her IdP, JWKS (JSON Web Key Set) — ID Token imzasını doğrulamak için bir dizi genel anahtar — yayınlar. İstemci bu anahtarları önbelleğe alır ve sunucuya başvurmadan alınan her token'ı doğrulamak için kullanır.

PKCE ile Authorization Code Flow

Authorization Code Flow üç adımlı bir süreçtir. İlk olarak, mobil uygulama bir code verifier (43–128 karakterlik rastgele bir dize) ve hash'ini — code challenge — oluşturur. Uygulama, client_id, redirect_uri, scope (openid profile email) ve code challenge içeren bir URL ile bir tarayıcı veya WebView açar. Kullanıcı, IdP sayfasında kimlik bilgilerini girer ve izni onaylar. IdP, tarayıcıyı bir authorization code ile uygulamaya yönlendirir.

İkinci adımda, uygulama authorization code, code verifier ve client_id'yi sunucunun Token Endpoint'ine gönderir. Sunucu, code verifier'ı depolanan code challenge ile doğrular ve bir ID Token, Access Token ve isteğe bağlı olarak bir Refresh Token döndürür. Üçüncü adımda, uygulama ID Token'ı doğrular: JWKS'ye karşı imzayı doğrular, issuer (iss), audience (aud) ve son kullanma zamanını (exp) kontrol eder. Doğrulama başarılı olursa, kullanıcının kimliği doğrulanmış sayılır.

PKCE (Proof Key for Code Exchange), genel istemcilerdeki standart Authorization Code Flow'un doğasında bulunan bir güvenlik açığını ortadan kaldırır. Mobil uygulama bir client secret'ı güvenli bir şekilde depolayamadığından, authorization code'u ele geçiren bir saldırgan bunu token'larla değiştirebilir. Code verifier bu sorunu çözer: kod ele geçirilse bile, orijinal code verifier olmadan değişim imkansızdır. OAuth Security Best Practices (RFC 9700), mobil uygulamalar dahil tüm genel istemciler için PKCE'yi zorunlu kılar.

ID Token ve Access Token

OpenID Connect, temel olarak farklı iki token döndürür: ID Token ve Access Token. ID Token her zaman bir JWT'dir ve istemci tarafından okunup doğrulanabilir. Kullanıcı bilgilerini içerir ve API erişimi için değil, kimlik doğrulama için kullanılır.

ID Token Yapısı

ID Token, Base64 ile kodlanmış ve noktalarla ayrılmış bir header, payload ve signature'dan oluşur. Header, alg (imza algoritması) ve kid (anahtar tanımlayıcısı) içerir. Payload, zorunlu talepleri içerir: iss (issuer), sub (subject — benzersiz kullanıcı ID'si), aud (audience — istemci tanımlayıcısı), exp (expiration), iat (issued at). İsteğe bağlı talepler arasında name, email, picture, locale bulunur.

Google'dan çözülmüş ID Token payload örneği:

json
{
  "iss": "https://accounts.google.com",
  "sub": "1234567890",
  "aud": "my-app-123.apps.googleusercontent.com",
  "exp": 1812345678,
  "iat": 1812342078,
  "name": "Ivan Petrov",
  "email": "ivan@example.com"
}

Access Token, istemcinin API isteklerinde ilettiği opak bir token (isteğe bağlı dize) veya JWT'dir. ID Token'ın aksine, access token istemci tarafından okunmak üzere tasarlanmamıştır — biçimi ve içeriği yalnızca kaynak sunucu ve yetkilendirme sunucusu tarafından bilinir. Access Token'ın bir kapsamı (scope) — bir izin kısıtlaması — ve genellikle 15–60 dakika olan kısa bir ömrü vardır.

OpenID Connect ve OAuth 2.0 Arasındaki Farklar

OAuth 2.0, bir uygulamanın kullanıcı kaynaklarına nasıl erişeceğini tanımlayan bir yetkilendirme çerçevesidir. OpenID Connect, bu sürece kimlik doğrulama ekleyen bir uzantıdır. Temel fark: OAuth 2.0 bir token biçimi tanımlamaz ve uygulamaya isteği tam olarak kimin yaptığını bilme yöntemi sağlamaz.

ParametreOAuth 2.0OpenID Connect
AmaçKaynaklara erişim için yetkilendirmeKimlik doğrulama + yetkilendirme
Kimlik token'ıHayırID Token (JWT)
Kapsam (Scope)api:read, api:writeopenid, profile, email
UserInfo Endpointİsteğe bağlıStandartlaştırılmış
Tek Oturum KapatmaHayırOpenID Connect Session Management spesifikasyonu

OpenID Connect Ne Zaman Seçilmeli

OpenID Connect, uygulamanın yalnızca kullanıcının verilerine erişmesi değil, kullanıcıyı tanımlaması gerektiğinde gereklidir. “Google ile Oturum Aç” veya “Apple ile Oturum Aç” kullanıyorsanız — bu OIDC'dir. Uygulamanız, kullanıcının kimliğini bilmeye gerek kalmadan onun adına üçüncü taraf bir API çağırıyorsa — saf OAuth 2.0 yeterlidir. Tek Oturum Açma (SSO) ile kurumsal sistemler için seçim açıktır: yalnızca OpenID Connect, çünkü standartlaştırılmış oturum kapatma ve oturum yönetimi sağlar.

Mobil Uygulamalarda OpenID Connect Uygulaması

OpenID Connect'i mobil uygulamaya entegre etmek, doğru kütüphaneyi seçmeyi ve akışı doğru şekilde yapılandırmayı gerektirir. Android için, kimlik bilgisi yöneticisini (AndroidX Credentials) veya AppAuth kütüphanesini kullanın. iOS için, ASWebAuthenticationSession ile AuthenticationServices çerçevesini kullanın.

Kotlin Kod Örneği (Android)

Aşağıda, AppAuth-Android kütüphanesini kullanarak Authorization Code Flow'u başlatma örneği verilmiştir. Uygulama bir yetkilendirme isteği oluşturur, kullanıcı girişi için bir tarayıcı açar ve token'larla geri aramayı işler.

kotlin
val authRequest = AuthorizationRequest.Builder(
    serviceConfig,
    clientId,
    "code",
    Uri.parse("com.example.app:/oauth")
)
.setScope("openid profile email")
.build()

val authService = AuthorizationService(this)
val intent = authService.getAuthorizationRequestIntent(authRequest)
startActivityForResult(intent, REQUEST_CODE)

override fun onActivityResult(
    requestCode: Int,
    resultCode: Int,
    data: Intent?
) {
    if (requestCode == REQUEST_CODE) {
        val response = AuthorizationResponse.fromIntent(data)
        if (response?.authorizationCode != null) {
            exchangeCodeForTokens(response.authorizationCode)
        }
    }
}

Swift Kod Örneği (iOS)

Apple'ın ASWebAuthenticationSession'ı, iCloud Keychain aracılığıyla SSO desteği ile OIDC akışı için yerleşik bir tarayıcı sağlar. Oturum, yetkilendirme URL'si ile başlar ve geri arama bir completion handler aracılığıyla işlenir.

OpenID Connect için bir kütüphane seçerken, yerleşik PKCE desteğini göz önünde bulundurun: AppAuth-Android ve AppAuth-iOS, PKCE'yi varsayılan olarak destekler. Firebase Authentication, Google Sign-In, Sign in with Apple ve Microsoft için dahili olarak OIDC kullanır — geliştiricinin akışı manuel olarak uygulaması gerekmez. Özel IdP (örneğin, Keycloak veya Okta) ile kurumsal sistemler için AppAuth, yapılandırma ve hata işleme üzerinde tam kontrol ile standart seçim olmaya devam etmektedir.

swift
let authURL = URL("https://accounts.google.com/o/oauth2/v2/auth")!
let callbackURL = URL("com.example.app://oauth")!

let session = ASWebAuthenticationSession(
    url: authURL,
    callbackURLScheme: callbackURL.scheme!
) { url, error in
    guard let url = url else { return }
    let components = URLComponents(url: url)
    let code = components?.queryItems?.first(where: { $0.name == "code" })?.value
    if let code = code { exchangeCode(code) }
}
session.start()

Sıkça Sorulan Sorular

OpenID Connect, OAuth 2.0'dan nasıl farklıdır?

OpenID Connect, OAuth 2.0'ın bir uzantısıdır ve kimlik doğrulama ekler. OAuth 2.0 yalnızca kaynaklara erişim için yetkilendirmeyi yönetir. OIDC, ID Token'ı (kullanıcı verileriyle JWT) tanıtır, UserInfo uç noktasını standartlaştırır ve Tek Oturum Açma ile oturum kapatma yetenekleri ekler.

Mobil uygulamalar için hangi OIDC akışı uygundur?

Mobil uygulamalar için PKCE ile Authorization Code Flow önerilir. Bir client secret gerektirmez, authorization code'un ele geçirilmesine karşı korur ve tüm büyük Identity Provider'lar tarafından desteklenir. Implicit Flow kullanımdan kaldırılmıştır ve yeni projelerde kullanılmamalıdır.

İstemcide ID Token nasıl doğrulanır?

ID Token üç adımda doğrulanır: JWKS uç noktasından genel anahtar kullanarak imza doğrulaması, taleplerin (iss, aud, exp) kontrolü ve payload'un çözülmesi. Çoğu SDK — AppAuth, MSAL, Google Sign-In — token alındığında bu doğrulamayı otomatik olarak gerçekleştirir.

Bir istekte “openid” kapsamı nedir?

openid kapsamı, bir OIDC isteğini normal bir OAuth 2.0 isteğinden ayıran zorunlu bir parametredir. Bu olmadan, sunucu bir ID Token döndürmez. Ek kapsamlar — profile, email, address — token'a hangi belirli kullanıcı taleplerinin dahil edileceğini belirler.

OpenID Connect tarayıcı olmadan kullanılabilir mi?

Teknik olarak evet, Resource Owner Password Credentials akışı aracılığıyla, ancak önerilmez. Tarayıcı akışı, kimlik bilgisi yalıtımı sağlar — uygulama kullanıcının şifresini asla görmez. Apple ve Google, hizmetleri için tarayıcı tabanlı kimlik doğrulama gerektirir.

Özet

  • OpenID Connect — JWT formatında ID Token ile OAuth 2.0 üzerinde kimlik doğrulama protokolü
  • ID Token doğrulanmış kullanıcı taleplerini içerir ve sunucu tarafından imzalanır
  • PKCE ile Authorization Code Flow — mobil uygulamalar için standart ve güvenli akış
  • Identity Provider otomatik istemci yapılandırması için Discovery URL ve JWKS yayınlar
  • OIDC uygulamalar arasında Tek Oturum Açma ve standartlaştırılmış oturum kapatmayı destekler
  • AppAuth ve AuthenticationServices sırasıyla Android ve iOS için ana kütüphanelerdir
  • OpenID Connect Google Sign-In, Sign in with Apple ve kurumsal SSO çözümlerinde kullanılır

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun