Gelen JWT Anahtarından Payload Alanındaki Json Verisinden Veri Alan Script
Groovy Script
import groovy.json.JsonSlurper
import org.apache.commons.codec.binary.Base64
def authzHeaderValue = requestHeaderMapToTargetAPI.get("Authorization")
authzHeaderValue = authzHeaderValue.split('\\.')[1] //Bearer yazan kısım için, veri her zaman ilk nokta işaretinden sonra geçtiği için ayrılma ihtiyacı duyulmamıştır.
def decodedValue = new String(Base64.decodeBase64(authzHeaderValue),"UTF-8")
def jsonSlurper = new JsonSlurper()
def jsonMessage = jsonSlurper.parseText(decodedValue)
//do some logic with json:
requestHeaderMapToTargetAPI.put("usernameTest",jsonMessage.username)
Açıklama
Bu script şu işlemleri gerçekleştirir:
- Token Alma: Authorization header'ından JWT token alınır
- Payload Ayrıştırma: JWT token formatı
header.payload.signatureşeklindedir. Token nokta (.) karakterine göre ayrılarak payload kısmı (ikinci bölüm) alınır - Base64 Decode: Payload kısmı Base64 kodlanmış JSON formatındadır. Bu kısım decode edilir
- JSON Parse: Decode edilen veri JSON olarak parse edilir
- Veri Kullanımı: İstenen alanlar (örneğin
username) çıkarılarak kullanılabilir
Örnekte, payload içindeki username alanı alınarak usernameTest adıyla header'a eklenmektedir.
not
Bu script, request hattında (Request Policy) çalıştırılmalıdır çünkü requestHeaderMapToTargetAPI değişkenini kullanmaktadır.