Konuyu Açan #1
FastAPI API Key Doğrulama Teknikleri

API güvenliği, modern web uygulamalarında en kritik unsurlardan biri haline geldi. Özellikle, API'lere erişimi kontrollü hale getirmek ve sadece yetkilendirilmiş kullanıcıların erişimini sağlamak için API anahtarları (API Keys) yaygın olarak kullanılır. FastAPI, bu doğrulama yöntemini uygulamak için oldukça esnek ve güçlü araçlar sunar. Bu yazıda, FastAPI'de API anahtarı doğrulama tekniklerini detaylı ve teknik bir bakış açısıyla ele alacağız.

İlk olarak, API anahtarlarını genellikle iki temel yöntemle doğrularız: header tabanlı ve query parametreleri üzerinden. Header tabanlı doğrulama, API anahtarını request header'ında taşıyarak yapılır ve bu, en yaygın kullanılan metottur. Query parametreleri ise, URL üzerinden anahtarın iletilmesini sağlar, ancak bu yöntem genellikle önerilmez çünkü anahtar URL'de görünür ve güvenlik riski taşır.

FastAPI'de bu doğrulama işlemi, bağımsız bir güvenlik bağımlılığı (dependency) oluşturarak gerçekleştirilir. Örneğin, aşağıdaki kodda, API anahtarını doğrulamak için bir fonksiyon tanımlanmıştır:

KOD
1234567891011121314151617181920212223
from fastapi import FastAPI, Security, HTTPException
from fastapi.security.api_key import APIKeyHeader

API_KEY = "gizli-api-anahtari"
API_KEY_NAME = "access_token"
api_key_header = APIKeyHeader(name=API_KEY_NAME, auto_error=False)

app = FastAPI()

async def get_api_key(
    api_key_header: str = Security(api_key_header)
):
    if api_key_header == API_KEY:
        return api_key_header
    else:
        raise HTTPException(
            status_code=403, detail="API anahtarı geçersiz veya eksik."
        )

@app.get("/veri")
async def veri_endpoint(api_key: str = Security(get_api_key)):
    return {"mesaj": "API anahtarı doğrulandı."}


Burada, APIKeyHeader kullanılarak header'dan access_token ismiyle anahtar alınır ve karşılaştırılır. auto_error=False ile, anahtar eksikse doğrudan 403 hatası verilir. Bu yapı, hızlı ve güvenilir bir API anahtarı doğrulama sağlar.

Ayrıca, API anahtarlarını daha güvenli hale getirmek adına, veritabanında saklamak veya daha gelişmiş token mekanizmalarıyla kombine etmek mümkündür. Örneğin, JWT token'lar veya OAuth2 protokolü ile entegre edilerek, sadece sabit anahtarlar değil, dinamik ve zaman sınırlı token'lar kullanılabilir.

Sonuç olarak, FastAPI'de API anahtarı doğrulama, uygun güvenlik önlemleri alınarak, esnek ve sürdürülebilir şekilde uygulanabilir. Bu, API'lerinize sadece yetkilendirilmiş kullanıcıların erişmesini sağlar ve sisteminizi olası saldırılara karşı korur.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi