Ana içeriğe atla

Documentation Index

Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt

Use this file to discover all available pages before exploring further.

Bu script, gelen istekteki Authorization header’ını analiz ederek kullanıcı kimliğini ayıklar. Hem Basic Auth hem de JWT (Bearer) formatlarını destekler.
Alan Seçimi: Script varsayılan olarak JWT içerisindeki iss (issuer) alanına bakar. Eğer kullanıcı adınız sub veya preferred_username alanındaysa, kod içerisindeki parsed?.iss kısmını ilgili alanla güncelleyin.

Kullanım ve Özelleştirme

  • JWT Kullanımı: Eğer kullanıcı adı iss alanında değilse, scripti ekledikten sonra ilgili alanı (parsed?.sub vb.) mutlaka değiştirin.
  • Özel Formatlar: Eğer header “Basic” veya “Bearer” kelimesi olmadan gönderiliyorsa, scripti bu özel duruma göre özelleştirmeniz gerekebilir.
  • Fallback Mekanizması: Eğer header standart formatlara uymuyorsa, güvenli bir yedek plan olarak mevcut string’in ilk 6 karakteri alınır.

Groovy Script

import java.util.Base64
import groovy.json.JsonSlurper

def auth = requestHeaderMapFromClient.get("Authorization")
def result = "unknown"

if (auth && !auth.trim().isEmpty()) {

    if (auth.startsWith("Basic ")) {
        try {
            def base64Part = auth.length() > 6 ? auth.substring(6) : ""
            def decoded = new String(Base64.decoder.decode(base64Part), "UTF-8")
            result = decoded.contains(":") ? decoded.split(":")[0] : decoded
        } catch (Exception e) {
            result = null
        }
    }

    else if (auth.startsWith("Bearer ")) {
        def token = auth.length() > 7 ? auth.substring(7) : ""

        if (token.count(".") == 2) {
            try {
                def payload = token.split("\\.")[1]
                def json = new String(Base64.urlDecoder.decode(payload), "UTF-8")
                def parsed = new JsonSlurper().parseText(json)
                result = parsed?.iss
            } catch (Exception e) {
                result = null
            }
        } else {
            result = token.substring(0, Math.min(6, token.length()))
        }
    }

    else {
        result = auth.substring(0, Math.min(6, auth.length()))
    }
}

request_usernameOrKey = result
Scripti ekledikten sonra, kullandığınız Identity Provider’ın (Keycloak, Auth0 vb.) JWT içindeki hangi alanı (claim) kullanıcı adı olarak döndürdüğünü kontrol etmeyi unutmayın.

Hata Durumları

  • Unknown Yanıtı: Eğer sonuç unknown olarak dönüyorsa; script çalışmıyor, header boş geliyor ya da kullanıcı bilgisi ilgili alandan çekilemiyordur.
  • Decode Hataları: Base64 çözümleme (decode) işlemi sırasında bir hata oluşursa sonuç null olarak döner.