DEV Community

Cover image for OpenID Connect Eğitimi: Adım Adım Eksiksiz Rehber
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

OpenID Connect Eğitimi: Adım Adım Eksiksiz Rehber

OpenID Connect, güvenli, modern kimlik doğrulama ve tek oturum açma (SSO) için endüstri standardı haline geldi. Açık, pratik ve kapsamlı bir OpenID Connect eğitim rehberi arıyorsanız, doğru yerdesiniz. Bu kılavuz size OpenID Connect'in ne olduğunu, neden önemli olduğunu, temel kavramları, kimlik doğrulama akışını, uygulamalı implementasyonu ve gerçek dünya senaryoları için pratik örnekleri açıklayacaktır.

Apidog'u bugün deneyin

OpenID Connect Nedir? (OpenID Connect Eğitim Temelleri)

OpenID Connect, OAuth 2.0 çatısının üzerinde yer alan bir kimlik doğrulama protokolüdür. OAuth 2.0 yetkilendirme (kaynaklara erişim verme) için tasarlanmışken, OpenID Connect kimlik doğrulama—kullanıcıların kimliğini doğrulama ve temel profil bilgilerini güvenli bir şekilde sağlama—için oluşturulmuştur.

OpenID Connect neden önemlidir?

  • Güvenli Kimlik Doğrulama: Güvenli olmayan, ev yapımı oturum açma sistemlerinden kaçınır.
  • Tek Oturum Açma (SSO): Kullanıcılar tek bir kimlik sağlayıcı kullanarak birden fazla uygulamaya giriş yapabilir.
  • Birlikte Çalışabilirlik: Web, mobil ve API istemcileri arasında çalışır.
  • Profil Bilgileri: Kimlik ve profil verilerini standartlaştırılmış bir formatta (JWT Kimlik jetonları) döndürür.

Bu OpenID Connect eğitim rehberinde, tüm bu faydaların adım adım nasıl sağlandığını uygulamalı olarak göreceksiniz.

Bu OpenID Connect Eğitim Rehberi İçin Temel Kavramlar

OpenID Connect eğitim akışına geçmeden önce, karşılaşacağınız ana bileşenlere ve terimlere hızlıca göz atalım:

  • Kimlik Sağlayıcı (IdP): Kullanıcıların kimliğini doğrulayan hizmet (ör. Google, Auth0, Okta).
  • İstemci (Güvenen Taraf): Kimlik doğrulama talep eden uygulama (web/mobil/API).
  • Son Kullanıcı: Kimlik doğrulayan kişi.
  • Yetkilendirme Sunucusu: Genellikle IdP ile aynı, kimlik doğrulama sonrası jetonları döner.
  • Kimlik Jetonu (ID Token): Kullanıcı hakkında bilgi içeren JWT.
  • Erişim Jetonu (Access Token): (OAuth 2.0) Korunan API’lere erişim için kullanılır.
  • Keşif Belgesi: Kimlik doğrulama akışları için meta veri ve URL’leri içeren uç nokta.

OpenID Connect Eğitim Rehberi: Kimlik Doğrulama Akışı Açıklandı

OpenID Connect kimlik doğrulama sürecini uygulamak için aşağıdaki adımları takip edin:

1. Kullanıcı Oturum Açmayı Başlatır

Kullanıcı uygulamanızda “OpenID Connect ile Giriş Yap” seçeneğine tıklar.

2. İstemci Yetkilendirme Sunucusuna Yönlendirir

Uygulamanız, kullanıcıyı IdP’nin yetkilendirme uç noktasına aşağıdaki parametrelerle yönlendirir:

  • client_id
  • redirect_uri
  • scope (örn. openid)
  • state
  • response_type (genellikle code)

Örnek URL:

https://idp.example.com/authorize?
  client_id=YOUR_CLIENT_ID
  &redirect_uri=https://yourapp.com/callback
  &scope=openid%20profile%20email
  &response_type=code
  &state=randomState123
Enter fullscreen mode Exit fullscreen mode

3. Kullanıcı Kimlik Doğrular

IdP oturum açma ekranı gösterir. Kullanıcı giriş yapar ve gerekli izinleri onaylar.

4. Yetkilendirme Sunucusu Geri Yönlendirir

Başarılı oturum açma sonrasında IdP, kullanıcıyı redirect_uri adresinize bir yetkilendirme kodu ve state parametresi ile yönlendirir.

Örnek:

https://yourapp.com/callback?code=AUTH_CODE&state=randomState123
Enter fullscreen mode Exit fullscreen mode

5. İstemci Kodu Jetonlarla Değiştirir

Arka uç, kodu IdP’nin token endpoint’ine POST ederek jetonlarla değiştirir.

Örnek (HTTP POST):

POST /token
Host: idp.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=AUTH_CODE
&redirect_uri=https://yourapp.com/callback
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
Enter fullscreen mode Exit fullscreen mode

6. Jetonlar Döndürüldü

IdP aşağıdaki yanıtı döndürür:

  • id_token (kullanıcı bilgilerini içeren JWT)
  • access_token (API erişimi için)
  • (isteğe bağlı) refresh_token

Örnek JSON Yanıtı:

{
  "access_token": "eyJ...abc",
  "id_token": "eyJ...xyz",
  "expires_in": 3600,
  "token_type": "Bearer"
}
Enter fullscreen mode Exit fullscreen mode

7. İstemci Jetonları Doğrular ve Kullanır

Uygulamanız id_token'ın imzasını ve içeriğini doğrular ve kullanıcıyı oturum açmış olarak işaretler. API çağrıları için access_token kullanılır.

OpenID Connect Eğitim Rehberi: Akışları Anlamak

OpenID Connect farklı kimlik doğrulama akışlarını destekler. En güvenli ve önerilen akış Yetkilendirme Kodu Akışı’dır:

Yetkilendirme Kodu Akışı (Web Uygulamaları için Önerilir)

  • Jetonlar tarayıcıya açık şekilde gönderilmez.
  • Sunucu tarafı doğrulama yapılır.
  • Arka ucu olan uygulamalar için uygundur.

Not: Örtülü Akış (Implicit Flow) artık önerilmemektedir. SPA’lar için PKCE ile Yetkilendirme Kodu Akışı kullanın.

OpenID Connect Eğitim Rehberi: Kimlik Jetonunu Çözme

id_token, JWT formatında kullanıcı bilgileri içerir. Kimliği doğrulamak için jetonu çözümleyin ve doğrulayın.

Örnek id_token yükü:

{
  "iss": "https://idp.example.com",
  "sub": "1234567890",
  "aud": "YOUR_CLIENT_ID",
  "exp": 1712345678,
  "iat": 1712341678,
  "email": "user@example.com",
  "name": "Jane Doe"
}
Enter fullscreen mode Exit fullscreen mode
  • iss: Düzenleyen (IdP)
  • sub: Kullanıcı kimliği
  • aud: Hedef kitle (uygulamanız)
  • exp: Süre sonu
  • email, name: Standart iddialar

İpucu: Üretimde kimlik jetonunun imzasını ve iddialarını mutlaka doğrulayın.

OpenID Connect Eğitim Rehberi: Uygulamalı Örnek (Python)

Python ile, harici SDK’lar olmadan temel OpenID Connect akışını aşağıdaki şekilde uygulayabilirsiniz:

Adım 1: Yetkilendirme URL’sini Oluşturun

import urllib.parse

params = {
    "client_id": "YOUR_CLIENT_ID",
    "redirect_uri": "https://yourapp.com/callback",
    "response_type": "code",
    "scope": "openid profile email",
    "state": "randomState123"
}
auth_url = "https://idp.example.com/authorize?" + urllib.parse.urlencode(params)
print(auth_url)
Enter fullscreen mode Exit fullscreen mode

Adım 2: Yetkilendirme Kodunu Jetonlarla Değiştirin

import requests

token_data = {
    "grant_type": "authorization_code",
    "code": "AUTH_CODE",
    "redirect_uri": "https://yourapp.com/callback",
    "client_id": "YOUR_CLIENT_ID",
    "client_secret": "YOUR_CLIENT_SECRET"
}
resp = requests.post("https://idp.example.com/token", data=token_data)
tokens = resp.json()
print(tokens)
Enter fullscreen mode Exit fullscreen mode

Adım 3: Kimlik Jetonunu Çözün ve Doğrulayın

import jwt

id_token = tokens['id_token']
decoded = jwt.decode(id_token, options={"verify_signature": False})
print(decoded)
Enter fullscreen mode Exit fullscreen mode

Not: Gerçek ortamda mutlaka IdP’nin açık anahtarıyla imza doğrulaması yapın.

OpenID Connect Eğitim Rehberi: Pratik Uygulama Senaryoları

1. Birden Fazla Uygulama Arasında Tek Oturum Açma (SSO)

Kullanıcı bir kez oturum açar (ör. Google) ve tüm uygulamalarınıza erişir. Kurumsal SSO'ya uygun altyapı sağlar.

2. Güvenli API Kimlik Doğrulaması

API tüketicilerini doğrulamak için OpenID Connect kullanın. Her istekten önce kimlik jetonunu doğrulayın. Apidog gibi platformlar güvenli API uç noktalarını hızlıca tasarlayıp test etmenizi sağlar.

3. Sosyal Giriş Entegrasyonu

“Google ile Giriş Yap”, “Microsoft ile Giriş Yap” gibi sosyal girişler için bu rehberdeki akışı uygulayın.

4. Mobil Uygulama Kimlik Doğrulaması

Mobil uygulamalarda da OpenID Connect akışını (deep link veya in-app browser ile) kullanabilirsiniz.

OpenID Connect Eğitim Rehberi: Apidog ile Test ve Hata Ayıklama

OpenID Connect entegrasyonlarını geliştirirken Apidog gibi araçlarla API geliştirme ve test süreçlerini hızlandırabilirsiniz:

  • API İstek Testi: Jeton isteklerini simüle edin ve yanıtları görsel arayüzde doğrulayın.
  • Mock Uç Noktalar: Gerçek IdP’ye bağlı olmadan akışlarınızı taklit uç noktalarla test edin.
  • API Dokümantasyonu: OpenID Connect güvenli API’lerinizi ekiplerle kolayca paylaşın.

Apidog ile kimlik doğrulama akışlarınızı hızlıca test edip güvenliğinizi arttırabilirsiniz.

OpenID Connect Eğitim Rehberi: En İyi Uygulamalar

  • Kimlik jetonlarını doğrulayın: İmza, issuer, audience, expiration kontrol edin.
  • Her yerde HTTPS kullanın: Jetonları güvenli olmayan kanallarda iletmeyin.
  • Gizli bilgileri koruyun: client_secret ve jetonları güvende tutun.
  • Hata yönetimi uygulayın: Başarısız oturum açma, süresi dolmuş jeton, oturum iptali gibi durumları düzgün yönetin.
  • Güncel kalın: Kütüphane ve protokol güncellemelerini takip edin.

Sonuç: Bu OpenID Connect Eğitim Rehberinden Sonraki Adımlar

Artık OpenID Connect’in temelini, akışlarını, uygulama adımlarını ve pratik senaryolarını öğrendiniz. OpenID Connect modern uygulamalarda kimlik doğrulamanın altın standardı ve doğru uygulama ile hem güvenlik hem kullanıcı deneyimi sağlanır.

Sonraki adımlar:

  1. Uygulamanızı bir Kimlik Sağlayıcıda (Google, Auth0, Okta veya kendi sağlayıcınız) kaydedin.
  2. Yetkilendirme Kodu Akışını bu rehbere göre uygulayın.
  3. Akışınızı Apidog ile test edin ve doğrulayın.
  4. OpenID Connect Keşfi, dinamik istemci kaydı ve birleşik kimlik gibi ileri konuları araştırarak bilginizi derinleştirin.

Bu OpenID Connect eğitim rehberiyle, uygulamalarınıza güvenli ve modern kimlik doğrulama eklemeye hazırsınız. Mutlu kodlamalar!

Top comments (0)