AI Agents · Ders

Kimlik Doğrulama: API Anahtarları ve OAuth

Aracı API erişimi için taşıyıcı belirteçleri, API anahtarı üst bilgileri ve OAuth2 akışları.

2. ders / 413 adım

Kimlik Doğrulama: API Anahtarları ve OAuth, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Ajanlar İçin Kimlik Doğrulama Neden Önemlidir

Ajanınız harici bir API'yi çağırdığında, sunucunun isteği kimin yaptığını bilmesi gerekir. Kimlik doğrulama kimliği kanıtlar; yetkilendirme ise ne yapabileceğinizi belirler. Doğru kimlik doğrulama olmadan her istek 401 Unauthorized döndürür ve ajanınız hiçbir şey yapamaz.

Ajan geliştirmede iki yaklaşım öne çıkar: API anahtarları ve OAuth 2.0.

import requests

# Without auth — will get 401
response = requests.get('https://api.openai.com/v1/models')
print(response.status_code)  # 401 Unauthorized

# With API key in header — works
headers = {'Authorization': 'Bearer sk-proj-abc123'}
response = requests.get(
    'https://api.openai.com/v1/models',
    headers=headers
)
print(response.status_code)  # 200

Yetkilendirme Başlığında API Anahtarı

En yaygın yaklaşım, API anahtarınızı taşıyıcı belirteç olarak Authorization başlığında göndermektir. "Taşıyıcı" sözcüğü, bu belirtece sahip olan kişinin yetkili olduğunu belirtir; sunucu anahtarı taşıyan kişiye güvenir.

Bu yaklaşım OpenAI, Anthropic, GitHub ve modern API'lerin çoğu tarafından kullanılır.

import requests
import os

api_key = os.environ['OPENAI_API_KEY']

response = requests.post(
    'https://api.openai.com/v1/chat/completions',
    headers={
        'Authorization': f'Bearer {api_key}',
        'Content-Type': 'application/json'
    },
    json={
        'model': 'gpt-4o-mini',
        'messages': [{'role': 'user', 'content': 'Hello!'}]
    }
)
print(response.json()['choices'][0]['message']['content'])

Özel Başlıkta API Anahtarı (X-API-Key)

Bazı API'ler, özellikle eski veya dahili olanlar, Authorization: Bearer yerine X-API-Key gibi özel bir başlık kullanır. Fark yalnızca başlık adındadır; yaklaşım aynıdır. Beklenen kesin başlık adını öğrenmek için API belgelerine her zaman bakın.

import requests
import os

api_key = os.environ['SERVICE_API_KEY']

response = requests.get(
    'https://api.someservice.com/v1/data',
    headers={
        'X-API-Key': api_key,
        'Accept': 'application/json'
    }
)

if response.status_code == 200:
    data = response.json()
    print('Got data:', data)
elif response.status_code == 401:
    print('Invalid API key — check X-API-Key header')

Kimlik Bilgilerini Ortam Değişkenlerinde Saklama

API anahtarlarını kaynak kodunuza hiçbir zaman sabit olarak yazmayın. Bir anahtarı herkese açık bir depoya gönderirseniz botlar onu saniyeler içinde bulup kötüye kullanır. Doğru yaklaşım, kimlik bilgilerini ortam değişkenlerinde saklamak ve çalışma zamanında os.environ ile okumaktır.

Anahtar eksikse açık bir hata iletisi vermek için os.environ.get() kullanın.

import os

os.environ['OPENAI_API_KEY'] = 'sk-proj-abc123xyz789'  # simulate a set env var

api_key = os.environ.get('OPENAI_API_KEY')
if not api_key:
    raise EnvironmentError(
        'OPENAI_API_KEY environment variable not set. '
        'Run: export OPENAI_API_KEY=your-key-here'
    )

print('API key loaded from environment (never hard-code it in source)')

Yerel Geliştirme için python-dotenv Kullanımı

Geliştirme sırasında anahtarlarınızı proje kök dizininizdeki bir .env dosyasında tutun. Bunları otomatik olarak yüklemek için python-dotenv kütüphanesini kullanın. Hiçbir zaman gönderilmemesi için .env dosyasını .gitignore dosyanıza ekleyin.

# .env file (never commit this!)
# OPENAI_API_KEY=sk-proj-abc123
# ANTHROPIC_API_KEY=sk-ant-xyz456
# GITHUB_TOKEN=ghp_abc789

# In your Python code:
from dotenv import load_dotenv
import os

load_dotenv()  # loads .env into os.environ

openai_key = os.environ['OPENAI_API_KEY']
anthropic_key = os.environ['ANTHROPIC_API_KEY']
github_token = os.environ['GITHUB_TOKEN']

print('Keys loaded successfully')

OAuth 2.0 Nedir?

OAuth 2.0, yetki devri için kullanılan bir standarttır. Ajanınıza kullanıcının parolasını vermek yerine OAuth, kullanıcının sınırlı bir kapsam ve zaman aralığıyla kendi adına hareket etmesi için ajanınızı yetkilendirmesine olanak tanır. Google, GitHub, Slack ve Salesforce tarafından kullanılır.

Temel kavram şudur: Ajanınız bir yetkilendirme akışından sonra bir erişim belirteci alır ve API çağrıları için bu belirteci kullanır.

# OAuth flow overview:
#
# 1. Agent redirects user to:
#    https://auth.provider.com/oauth/authorize
#      ?client_id=YOUR_CLIENT_ID
#      &redirect_uri=http://localhost:8080/callback
#      &scope=read:repo%20write:issues
#      &response_type=code
#
# 2. User logs in and grants permission
# 3. Provider redirects to your callback with ?code=AUTH_CODE
# 4. Agent exchanges code for access_token
# 5. Agent uses access_token for API calls

print('OAuth flow: authorize -> code -> token -> API calls')

OAuth2 İstemci Kimlik Bilgileri Akışı

İstemci kimlik bilgileri akışı, aracılar için en basit OAuth akışıdır; kullanıcı etkileşimi gerekmez. Aracınız, belirteç almak için kendi istemci ID'si ve gizli anahtarıyla kimlik doğrulaması yapar. Bu akış, makineden makineye (M2M) iletişim için kullanılır.

Kimlik bilgilerinizi belirteç uç noktasına POST eder ve kısa ömürlü bir erişim belirteci alırsınız.

import requests
import os

client_id = os.environ['OAUTH_CLIENT_ID']
client_secret = os.environ['OAUTH_CLIENT_SECRET']
token_url = 'https://auth.example.com/oauth/token'

# Request an access token
response = requests.post(token_url, data={
    'grant_type': 'client_credentials',
    'client_id': client_id,
    'client_secret': client_secret,
    'scope': 'read:data write:tasks'
})

token_data = response.json()
access_token = token_data['access_token']
expires_in = token_data['expires_in']  # seconds
print(f'Token valid for {expires_in}s')

API Çağrılarında OAuth Belirteçlerini Kullanma

Bir OAuth erişim belirtecine sahip olduğunuzda, bunu tıpkı bir API anahtarı gibi Authorization: Bearer üstbilgisinde kullanın. Fark şu ki OAuth belirteçlerinin süresi dolar; bu nedenle aracınız çağrı yapmadan önce belirteci yenilemelidir.

import requests
import os
import time

class OAuthClient:
    def __init__(self, client_id, client_secret, token_url):
        self.client_id = client_id
        self.client_secret = client_secret
        self.token_url = token_url
        self.access_token = None
        self.token_expiry = 0

    def get_token(self):
        if time.time() < self.token_expiry - 60:  # 60s buffer
            return self.access_token
        r = requests.post(self.token_url, data={
            'grant_type': 'client_credentials',
            'client_id': self.client_id,
            'client_secret': self.client_secret
        })
        data = r.json()
        self.access_token = data['access_token']
        self.token_expiry = time.time() + data['expires_in']
        return self.access_token

    def get(self, url):
        token = self.get_token()
        return requests.get(url, headers={'Authorization': f'Bearer {token}'})

google-auth Kitaplığıyla OAuth 2.0

Google API'leri için google-auth kitaplığı, tüm OAuth karmaşıklığını sizin için yönetir. Belirteç yenileme işlemini otomatik olarak gerçekleştirir, kimlik bilgilerini bir JSON dosyasından okur ve belirteçleri bir AuthorizedSession aracılığıyla isteklere ekler.

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession

# Load service account credentials from JSON file
credentials = service_account.Credentials.from_service_account_file(
    'service-account.json',
    scopes=[
        'https://www.googleapis.com/auth/gmail.readonly',
        'https://www.googleapis.com/auth/calendar.events'
    ]
)

# AuthorizedSession auto-refreshes tokens
session = AuthorizedSession(credentials)

response = session.get(
    'https://www.googleapis.com/gmail/v1/users/me/messages'
)
print(response.json())

API Anahtarı Güvenliği İçin En İyi Uygulamalar

API anahtarlarını korumak, aracı güvenliği açısından kritik öneme sahiptir. Şu kurallara uyun:

  • Anahtarları ortam değişkenlerinde veya bir gizli bilgiler yöneticisinde (AWS Secrets Manager, HashiCorp Vault) saklayın
  • Anahtarları asla günlüğe kaydetmeyin; çıktıda maskeleyin
  • Anahtarları düzenli olarak yenileyin ve ele geçirildiği anlaşılanları derhal iptal edin
  • En az ayrıcalık ilkesini uygulayın; yalnızca aracınızın ihtiyaç duyduğu kapsamları isteyin
  • Sağlayıcı destekliyorsa API anahtarları için IP izin listeleri ayarlayın
import os

os.environ['OPENAI_API_KEY'] = 'sk-proj-abc123xyz789'

def get_key(env_var):
    key = os.environ.get(env_var)
    if not key:
        raise EnvironmentError(f'Missing required env var: {env_var}')
    return key

def mask_key(key):
    if len(key) < 8:
        return '***'
    return key[:4] + '...' + key[-4:]

api_key = get_key('OPENAI_API_KEY')
print(f'Using key: {mask_key(api_key)}')

Aracınızda 401 Unauthorized Yanıtlarını Ele Alma

Bir aracı 401 Unauthorized yanıtı aldığında, asla düşünmeden yeniden denememelidir; bu, hız sınırı kotasını boşa harcar. Bunun yerine belirtecin süresinin dolup dolmadığını kontrol edin (yenilemeyi deneyin) veya anahtarın kendisinin geçersiz olup olmadığını belirleyin (bir insanın sorunu çözebilmesi için hemen uyarı verin).

import requests
import os

def call_api_with_auth_check(url, api_key):
    response = requests.get(
        url,
        headers={'Authorization': f'Bearer {api_key}'}
    )
    if response.status_code == 401:
        error = response.json().get('error', {})
        code = error.get('code', 'unknown')
        if code == 'token_expired':
            print('Token expired — refresh needed')
            # trigger token refresh flow
        else:
            raise PermissionError(
                f'API key rejected: {error.get("message", "401 Unauthorized")}'
            )
    response.raise_for_status()
    return response.json()

Kısa Kontrol: API Anahtarlarının Saklanması

Kimlik bilgilerini yönetme konusundaki anlayışınızı sınayın.

Kimlik Doğrulama Özeti

Aracılar için iki temel kimlik doğrulama modelini öğrendiniz:

  • API anahtarları — Authorization: Bearer TOKEN veya X-API-Key üstbilgisinde gönderilir; basit ve durum bilgisi tutmaz
  • OAuth 2.0 — M2M için istemci kimlik bilgileri akışı; belirteçlerin süresi dolar ve yenilenmeleri gerekir
  • Anahtarları her zaman ortam değişkenlerinde saklayın; kaynak koduna asla koymayın
  • Yerel ortamda python-dotenv kullanın; üretimde ortam değişkenlerini veya gizli bilgiler yöneticilerini kullanın
  • 401 yanıtlarını, belirtecin süresinin dolup dolmadığını veya anahtarın geçersiz olup olmadığını kontrol ederek ele alın

Sağlam kimlik doğrulama yönetimi, her güvenilir aracının temelidir.

Başlamak ücretsiz

Yapay zeka eğitmeniyle AI Agents öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
60
Dersler
239

Sıkça Sorulan Sorular

“Kimlik Doğrulama: API Anahtarları ve OAuth” dersi ücretsiz mi?

Evet — “Kimlik Doğrulama: API Anahtarları ve OAuth” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Kimlik Doğrulama: API Anahtarları ve OAuth” dersinde ne öğreneceğim?

Aracı API erişimi için taşıyıcı belirteçleri, API anahtarı üst bilgileri ve OAuth2 akışları. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Kimlik Doğrulama: API Anahtarları ve OAuth” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Aracı Geliştiricileri İçin REST API Temelleri
  2. Kimlik Doğrulama: API Anahtarları ve OAuth
  3. API Yanıtlarını ve Hatalarını Ele Alma
  4. Hız Sınırlama ve Yeniden Deneme Mantığı
← AI Agents Sayfasına Dön