5858import com .perimeterx .utils .logger .IPXLogger ;
5959import com .perimeterx .utils .StringUtils ;
6060import com .perimeterx .utils .logger .LoggerFactory ;
61- import edu .emory .mathcs .backport .java .util .Collections ;
6261
6362import javax .servlet .http .HttpServletRequest ;
6463import javax .servlet .http .HttpServletResponseWrapper ;
6564import java .io .Closeable ;
6665import java .io .IOException ;
6766import java .net .URISyntaxException ;
67+ import java .nio .charset .StandardCharsets ;
6868import java .security .InvalidKeyException ;
6969import java .security .MessageDigest ;
7070import java .security .NoSuchAlgorithmException ;
7171import java .util .Base64 ;
72- import java .util .List ;
7372
7473import static com .perimeterx .utils .Constants .*;
7574import static com .perimeterx .utils .PXCommonUtils .cookieKeysToCheck ;
@@ -240,6 +239,7 @@ private void addCustomHeadersToRequest(HttpServletRequest request, PXContext con
240239 setBreachedAccount (request , context );
241240 setAdditionalS2SActivityHeaders (request , context );
242241 }
242+ setDataEnrichmentHeader (request , context );
243243 }
244244
245245 private void setBreachedAccount (HttpServletRequest request , PXContext context ) {
@@ -260,6 +260,26 @@ private void setAdditionalS2SActivityHeaders(HttpServletRequest request, PXConte
260260 }
261261 }
262262
263+ private void setDataEnrichmentHeader (HttpServletRequest request , PXContext context ) {
264+ try {
265+ String headerName = configuration .getPxDataEnrichmentHeaderName ();
266+ if (headerName == null || headerName .isEmpty ()) {
267+ return ;
268+ }
269+
270+ if (context .getPxde () == null || !context .isPxdeVerified ()) {
271+ return ;
272+ }
273+
274+ String pxdeJson = context .getPxde ().toString ();
275+ byte [] utf8Bytes = pxdeJson .getBytes (StandardCharsets .UTF_8 );
276+ String encodedPxde = new String (utf8Bytes , StandardCharsets .ISO_8859_1 );
277+ ((RequestWrapper ) request ).addHeader (headerName , encodedPxde );
278+ } catch (Exception e ) {
279+ context .logger .debug ("Failed to add data enrichment header" , e );
280+ }
281+ }
282+
263283 public void pxPostVerify (ResponseWrapper response , PXContext context ) throws PXException {
264284 try {
265285 if (context != null ) {
0 commit comments