Konuyu Açan
#1
FastAPI, modern Python web framework’leri arasında hız ve esneklik avantajıyla öne çıkarken, uygulama güvenliği açısından yetkilendirme ve erişim kontrolleri kritik hale gelir. Bu başlık altında, FastAPI’de yetkilendirme mekanizmalarını detaylıca ele alacağız ve uygulama örnekleriyle destekleyeceğiz.
İlk olarak, FastAPI’nin temel güvenlik yapısı OAuth2 ve JWT (JSON Web Token) gibi standartlara dayanır. API erişimini kontrol etmek için, kullanıcı doğrulaması (authentication) sonrası, kullanıcının rollerine veya izinlerine göre erişim sınırlandırması yapılır. Bu noktada, “dependency injection” yöntemiyle, belirli endpoint’lere erişimi sınırlandırmak pratik ve modüler bir çözümdür.
İkinci önemli konu, “dependency” fonksiyonlarıyla sağlanan yetkilendirme kontrolleridir. Örneğin, bir kullanıcının belirli bir role sahip olup olmadığını kontrol etmek için, şu şekilde bir fonksiyon yazılabilir:
Üçüncü aşamada, bu fonksiyonlar ile endpoint’lerde erişim sınırlandırması yapılabilir:
Bu yapı, API’deki her endpoint’e göre esnek ve güvenli erişim kontrolleri sağlar. Ayrıca, OAuth2 protokolü ve JWT kullanımı ile token bazlı doğrulama mekanizmaları geliştirilerek, güvenlik artırılabilir. Sonuç olarak, FastAPI’de yetkilendirme kontrolleri, modüler ve genişletilebilir yapılar kurmayı sağlar ve uygulama güvenliği açısından temel taşlardan biridir.
İlk olarak, FastAPI’nin temel güvenlik yapısı OAuth2 ve JWT (JSON Web Token) gibi standartlara dayanır. API erişimini kontrol etmek için, kullanıcı doğrulaması (authentication) sonrası, kullanıcının rollerine veya izinlerine göre erişim sınırlandırması yapılır. Bu noktada, “dependency injection” yöntemiyle, belirli endpoint’lere erişimi sınırlandırmak pratik ve modüler bir çözümdür.
İkinci önemli konu, “dependency” fonksiyonlarıyla sağlanan yetkilendirme kontrolleridir. Örneğin, bir kullanıcının belirli bir role sahip olup olmadığını kontrol etmek için, şu şekilde bir fonksiyon yazılabilir:
KOD
12345678910111213141516
async def get_current_user(token: str = Depends(oauth2_scheme)):
user = verify_token(token)
if not user:
raise HTTPException(status_code=401, detail="Geçersiz token")
return user
def get_current_active_user(current_user: User = Depends(get_current_user)):
if not current_user.is_active:
raise HTTPException(status_code=400, detail="Aktif olmayan kullanıcı")
return current_user
def get_current_active_superuser(current_user: User = Depends(get_current_active_user)):
if not current_user.is_superuser:
raise HTTPException(status_code=403, detail="Yetersiz yetki")
return current_user
Üçüncü aşamada, bu fonksiyonlar ile endpoint’lerde erişim sınırlandırması yapılabilir:
KOD
1234
@app.get("/admin/")
async def read_admin_data(current_user: User = Depends(get_current_active_superuser)):
return {"admin_data": "Gizli bilgiler"}
Bu yapı, API’deki her endpoint’e göre esnek ve güvenli erişim kontrolleri sağlar. Ayrıca, OAuth2 protokolü ve JWT kullanımı ile token bazlı doğrulama mekanizmaları geliştirilerek, güvenlik artırılabilir. Sonuç olarak, FastAPI’de yetkilendirme kontrolleri, modüler ve genişletilebilir yapılar kurmayı sağlar ve uygulama güvenliği açısından temel taşlardan biridir.
