JWT Auth: Go API'lerinde Token Tabanlı Yetkilendirme

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18

Stateless (Durumsuz) Güvenlik​

Modern REST API'lerde sunucu, kullanıcının kim olduğunu RAM'de (Session) tutmaz. Bunun yerine kullanıcıya imzalı bir kimlik kartı verir: JWT. Kullanıcı her istekte bu kartı gösterir.

Kütüphane​

Go'da standart kütüphane github.com/golang-jwt/jwt/v5'tir.

1. Token Oluşturma (Login)​

Kod:
package main

import ("fmt""time""github.com/golang-jwt/jwt/v5")

// Gizli Anahtar (Bunu asla kodun içine gömmeyin, Env'den okuyun!)var hmacSampleSecret = []byte("cok_gizli_anahtar")

func TokenOlustur(username string) (string, error) {// Token içine konacak bilgiler (Claims)claims := jwt.MapClaims{"user": username,"exp":  time.Now().Add(time.Hour * 1).Unix(), // 1 saat geçerli}

// Token nesnesini oluştur<br>token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)<br><br>// İmzala ve String olarak döndür<br>return token.SignedString(hmacSampleSecret)<br>
}

2. Token Doğrulama (Middleware)​

Kod:
func TokenDogrula(tokenString string) (*jwt.Token, error) {return jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {// İmza yöntemi doğru mu? (HMAC mı?)if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {return nil, fmt.Errorf("beklenmeyen imza yöntemi: %v", token.Header["alg"])}return hmacSampleSecret, nil})}

func main() {// TesttokenStr, _ := TokenOlustur("Gopher")fmt.Println("Üretilen Token:", tokenStr)

token, err := TokenDogrula(tokenStr)<br>if claims, ok := token.Claims.(jwt.MapClaims); ok &amp;&amp; token.Valid {<br>&nbsp;&nbsp;&nbsp;&nbsp;fmt.Println("Doğrulama Başarılı! Kullanıcı:", claims["user"])<br>} else {<br>&nbsp;&nbsp;&nbsp;&nbsp;fmt.Println("Hata:", err)<br>}<br>
}

Sonuç​

API güvenliğinde JWT standarttır. Ancak JWT'lerin "Log Out" mekanizması yoktur (Token süresi dolana kadar geçerlidir). Bu yüzden kritik işlemlerde token süresini kısa tutmak önemlidir.
 
Geri
Üst