Ana içeriğe atla
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.