Intercettare il token di accesso ad un servizio

Può capitare nello sviluppo di un iFlow, di dover utilizzare servizi REST dei quali non si dispone direttamente del token che invece viene reso disponibile tramite un altro servizio.

Questo rappresenta un problema laddove si volesse provare il servizio da tool esterni a CPI, leggi Postman o affini.

Per bypassare il problema è possibile catturare il token generato mediante un semplice script Groovy, da inserire provvisoriamente nell’artifact, ed utilizzarlo nell’ambito del suo periodo di validità.

import com.sap.gateway.ip.core.customdev.util.Message;

import java.util.HashMap;

def Message processData(Message message) {

def messageLog = messageLogFactory.getMessageLog(message);

def map = message.getHeaders()

    String token = map.get("Authorization")

if(messageLog != null){

messageLog.setStringProperty("Logging#1", "SP_Token")

messageLog.addAttachmentAsString("Authorization: ", token, "text/plain");

}

return message;

}

Lo scenario descritto prevede in 1 il servizio che rilascia il token e in 2 il servizio che lo utilizza.

Impostando prima di quest’ultimo il groovy Trace SP Auth, questo lo intercetta e lo scrive in un attachment.

Analizzando il servizio 2 è possibile vederlo in Trace