Externe databronnen external-data-sources
Werken met externe gegevensbronnen gs-ext-data-sources
Met externe gegevensbronnen kunt u een verbinding met systemen van derden definiëren, bijvoorbeeld als u een boekingssysteem voor hotels gebruikt om te controleren of de persoon een kamer heeft geregistreerd. In tegenstelling tot de ingebouwde Adobe Experience Platform gegevensbron kunt u zoveel externe gegevensbronnen maken als u nodig hebt.
-
De begeleiding wanneer het werken met externe systemen is vermeld op deze pagina .
-
Aangezien de reacties nu worden gesteund, zou u douaneacties in plaats van gegevensbronnen voor externe gegevensbronnen moeten gebruiken-gevallen. Voor meer informatie over reacties, zie reacties van de douaneactie . Aangepaste acties zonder persistentie in Data Lake zijn de juiste keuze wanneer de gegevens alleen nuttig zijn binnen de reis en het externe systeem toegankelijk is via een API-eindpunt. Voor een vergelijking van alle opties van de gegevenstoegang, zie uw strategie van de gegevenstoegang kiezen .
REST-API’s die gebruikmaken van POST of GET en JSON retourneren, worden ondersteund. API-sleutel, standaard- en aangepaste verificatiemodi worden ondersteund.
Laten we het voorbeeld nemen van een weerdienst van API die ik wil gebruiken om het gedrag van mijn reis aan te passen aan weergegevens in real time.
Hier volgen twee voorbeelden van de API-aanroep:
- https://api.adobeweather.org/weather?city=London,uk&appid=1234
- https://api.adobeweather.org/weather?lat=35&lon=139&appid=1234
De vraag wordt samengesteld uit een belangrijkste URL (https://api.adobeweather.org/weather), twee parametersreeksen ("stad"voor de stad en "lang/lang"voor de breedte en lengtegraad) en API sleutel (toegevoegd).
cacheDuration , met name bij zware werklasten, om te voorkomen dat de vervaldatumproblemen en 401 fouten niet worden opgelost.Een externe gegevensbron maken en configureren create-ext-data-sources
Hieronder vindt u de belangrijkste stappen voor het maken en configureren van een nieuwe externe gegevensbron:
-
Klik in de lijst met gegevensbronnen op Create Data Source om een nieuwe externe gegevensbron te maken.
Hiermee opent u het configuratievenster voor de gegevensbron aan de rechterkant van het scherm.
-
Voer een naam in voor de gegevensbron.
Alleen alfanumerieke tekens en onderstrepingstekens zijn toegestaan. De maximumlengte is 30 tekens.
-
Voeg een beschrijving toe aan uw gegevensbron. Deze stap is optioneel.
-
Voeg de URL van de externe service toe. In ons voorbeeld: https://api.adobeweather.org/weather.
note caution CAUTION We raden u ten zeerste aan HTTPS te gebruiken om beveiligingsredenen. Merk ook op dat wij niet het gebruik van de adressen van Adobe toestaan die niet openbaar beschikbaar en het gebruik van IP adressen zijn.
-
Vorm de authentificatie afhankelijk van de externe de dienstconfiguratie: No authentication , Basic , Custom of API key .
Voor de basisauthentificatiemodus, moet u een gebruikersbenaming en een wachtwoord invullen.
note NOTE -
Wanneer de verificatieaanroep wordt uitgevoerd, wordt de
<username>:<password>-tekenreeks, gecodeerd in base64, toegevoegd aan de verificatieheader. -
Adobe Journey Optimizer versleutelt automatisch geheimen die zijn gedefinieerd in aangepaste handelingen. De encryptiesleutels van elke organisatie worden veilig beheerd in een specifieke vault die aan hun organisatie wordt gebonden. Wanneer de geloofsbrieven in de interface worden getoond, worden zij gemaskeerd door gebrek om toevallige blootstelling te verhinderen.
Voor meer informatie over de wijze van de douaneauthentificatie, zie de sectie van de de wijze van de douaneauthentificatie . In ons voorbeeld kiezen we de API-sleutelverificatiemodus, zoals hieronder:
-
Type : “API-sleutel”
-
Name : “appid” (dit is de naam van de API-sleutelparameter)
-
Value : “1234” (dit is de waarde van onze API-sleutel)
-
Location : “Query-parameter” (de API-sleutel bevindt zich in de URL)
-
-
Voeg een nieuwe veldgroep voor elke API-parameterset toe door op Add a New Field Group te klikken. Alleen alfanumerieke tekens en onderstrepingstekens zijn toegestaan in de naam van de veldgroep. De maximumlengte is 30 tekens. In ons voorbeeld moeten we twee veldgroepen maken, één voor elke parameterset (stad en lang/lang).
Voor de parameterset “long/lat” maken we een veldgroep met de volgende informatie:
- Used in : geeft het aantal ritten weer dat een veldgroep gebruikt. U kunt op het pictogram View journeys klikken om de lijst met reizen weer te geven met deze veldgroep.
- Method : Selecteer de methode POST of GET. In ons geval, selecteren wij de GET methode.
- Dynamic Values : Voer de verschillende parameters in, gescheiden door een komma, “long,lat” in ons voorbeeld. Aangezien de parameterwaarden afhankelijk zijn van de uitvoeringscontext, worden ze tijdens de reizen gedefinieerd. leer meer over uitdrukkingen
- Response Payload : Klik binnen het Payload gebied en deeg een voorbeeld van de lading die door de vraag is teruggekeerd. Voor ons voorbeeld hebben we een payload gebruikt die op een API-website voor weersomstandigheden is gevonden. Controleer of de veldtypen correct zijn. Telkens wanneer de API wordt aangeroepen, haalt het systeem alle velden op die in het payload-voorbeeld zijn opgenomen. U kunt op Paste a new payload klikken als u de huidige lading wilt veranderen.
- Sent Payload : dit veld staat niet in ons voorbeeld . Deze optie is alleen beschikbaar als u de methode POST selecteert. Plak de lading die naar het derdesysteem zal worden verzonden.
Als een GET-aanroep parameters vereist, voert u de parameter(s) in het veld Dynamic Values in en worden deze automatisch aan het einde van de aanroep toegevoegd. In het geval van een vraag van de POST, moet u:
- vermeld de parameters die tijdens de aanroeptijd moeten worden doorgegeven in het veld Dynamic Values (in het onderstaande voorbeeld: “id”).
- zij worden ook met exact dezelfde syntaxis in de hoofdtekst van de verzonden lading gespecificeerd. Hiervoor moet u het volgende toevoegen: “param” “naam van de parameter” (in het onderstaande voorbeeld: “id”). Volg de onderstaande syntaxis:
{"id":{"param":"identifier"}}
Zodra uw veranderingen worden bewaard, wordt de gegevensbron gevormd en klaar om in uw reizen, bijvoorbeeld in uw voorwaarden te worden gebruikt of een e-mail te personaliseren. Als de temperatuur boven 30°C ligt, kunt u besluiten een specifieke communicatie te sturen.
Aangepaste verificatiemodus custom-authentication-mode
De wijze van de douaneauthentificatie wordt gebruikt voor complexe authentificatie, vaak gebruikt om API omsluitende protocollen zoals OAuth2 te roepen, om een toegangstoken terug te winnen dat in het echte HTTP- verzoek voor de actie moet worden ingespoten.
Wanneer u de douaneauthentificatie vormt, gebruik de Click to check the authentication knoop om te controleren als de lading van de douaneauthentificatie correct wordt gevormd.
Wanneer de test succesvol is, wordt de knoop groen.
In deze verificatiemodus bestaat de uitvoering van de handeling uit twee stappen:
- Roep het eindpunt aan om het toegangstoken te produceren.
- Roep REST API door op de juiste manier het toegangstoken te injecteren.
Definitie van het eindpunt dat moet worden geroepen om het toegangstoken te produceren custom-authentication-endpoint
-
endpoint: URL om het eindpunt te gebruiken te produceren -
methode van het HTTP- verzoek op het eindpunt (
GETofPOST) -
headers: sleutel-waarde paren die als kopballen in deze vraag moeten worden geïnjecteerd indien vereist -
body: beschrijft het lichaam van de vraag als de methode POST is. Wij steunen een beperkte lichaamsstructuur, die in bodyParams (zeer belangrijke-waardeparen) wordt bepaald. Het bodyType beschrijft het formaat en het coderen van het lichaam in de vraag:form: betekent dat het inhoudstype application/x-www-form-urlencoded (charset UTF-8) zal zijn en de sleutel-waarde paren zullen in series worden vervaardigd zoals is: key1=value1&key2=value2&…json: betekent dat het inhoudstype application/json (charset UTF-8) zal zijn en de sleutel-waardeparen als json voorwerp in series zullen worden vervaardigd aangezien is: { “key1”: “value1”, “key2”: “value2”, …}
Definitie van de manier waarop het toegangstoken in het HTTP- verzoek van de actie moet worden ingespoten custom-authentication-access-token
-
authenticationType: bepaalt hoe het geproduceerde toegangstoken in de vraag van HTTP voor de actie moet worden geïnjecteerd. De mogelijke waarden zijn:
bearer: Geeft aan dat het toegangstoken moet worden geïnjecteerd in de machtigingheader, zoals: Vergunning: Drager <access token>header: Geeft aan dat het toegangstoken moet worden geïnjecteerd als een header, de headernaam gedefinieerd door de eigenschaptokenTarget. Als de waardetokenTargetbijvoorbeeldmyHeaderis, wordt het toegangstoken als een header geïnjecteerd als: myHeader: <access token>queryParam: wijst erop dat het toegangstoken als queryParam moet worden ingespoten, de naam van de vraagparam die door het bezit tokenTarget wordt bepaald. Bijvoorbeeld, als tokenTarget myQueryParam is, zal URL van de actievraag zijn: <url>?myQueryParam=<access token>
-
tokenInResponse: wijst erop hoe te om het toegangstoken uit de authentificatievraag te halen. Deze eigenschap kan zijn:
response: wijst erop dat de reactie van HTTP het toegangstoken is- een kiezer in een json (ervan uitgaande dat de reactie een json is, ondersteunen we geen andere indelingen, zoals XML). Het formaat van deze selecteur is json://<path aan het toegangstoken bezit>. Bijvoorbeeld, als de reactie van de vraag is: { "access token": “theToken”, “timestamp”: 12323445656 }, zal tokenInResponse zijn: json: //access_token _
De indeling van deze verificatie is:
{
"type": "customAuthorization",
"endpoint": "<URL of the authentication endpoint>",
"method": "<HTTP method to call the authentication endpoint, in 'GET' or 'POST'>",
(optional) "headers": {
"<header name>": "<header value>",
...
},
(optional, mandatory if method is 'POST') "body": {
"bodyType": "<'form'or 'json'>,
"bodyParams": {
"param1": value1,
...
}
},
"tokenInResponse": "<'response' or json selector in format 'json://<field path to access token>'",
"cacheDuration": {
(optional, mutually exclusive with 'duration') "expiryInResponse": "<json selector in format 'json://<field path to expiry>'",
(optional, mutually exclusive with 'expiryInResponse') "duration": <integer value>,
"timeUnit": "<unit in 'milliseconds', 'seconds', 'minutes', 'hours', 'days', 'months', 'years'>"
},
"authorizationType": "<value in 'bearer', 'header' or 'queryParam'>",
(optional, mandatory if authorizationType is 'header' or 'queryParam') "tokenTarget": "<name of the header or queryParam if the authorizationType is 'header' or 'queryParam'>",
}
U kunt de geheim voorgeheugenduur van het teken voor een bron van de douaneauthentificatiegegevens veranderen. Hieronder ziet u een voorbeeld van een aangepaste payload voor verificatie. De duur van de cache wordt gedefinieerd in de parameter cacheDuration . Hiermee wordt de retentieduur van het gegenereerde token in de cache opgegeven. De eenheid kan milliseconden, seconden, minuten, uren, dagen, maanden, jaren zijn.
Hier is een voorbeeld voor het dragerauthentificatietype:
{
"type": "customAuthorization",
"endpoint": "https://<your_auth_endpoint>/epsilon/oauth2/access_token",
"method": "POST",
"headers": {
"Authorization": "Basic EncodeBase64(<epsilon Client Id>:<epsilon Client Secret>)"
},
"body": {
"bodyType": "form",
"bodyParams": {
"scope": "cn mail givenname uid employeeNumber",
"grant_type": "password",
"username": "<epsilon User Name>",
"password": "<epsilon User Password>"
}
},
"tokenInResponse": "json://access_token",
"cacheDuration": {
"duration": 5,
"timeUnit": "minutes"
},
},
-
Het verificatietoken wordt per reis in het cachegeheugen opgeslagen: als twee reizen dezelfde aangepaste handeling gebruiken , heeft elke reis een eigen tokencaching . Deze token wordt niet tussen deze reizen gedeeld.
-
De duur van het geheime voorgeheugen helpt om teveel vraag aan de authentificatieeindpunten te vermijden. Het symbolenbehoud van de authentificatie wordt caching in de diensten, er is geen persistentie. Als de dienst opnieuw wordt begonnen, begint het met een schone geheime voorgeheugen. De cache-duur is standaard 1 uur. In de lading van de douaneauthentificatie, kan het worden aangepast door een andere bewaarduur te specificeren.
Aangepaste verificatie op basis van certificaten certificate-credential
Voor onderneming-API’s die verificatie van de identiteit op basis van certificaten afdwingen, zoals de Microsoft Entra-id, kunt u op certificaten gebaseerde aangepaste verificatie configureren door "subType": "certificateCredential" toe te voegen aan de aangepaste payload van de autorisatie. Journey Optimizer gebruikt door Adobe beheerd certificaat om een JWT-clientbevestiging te ondertekenen en deze voor een toegangstoken uit te wisselen. Er is geen clientgeheim vereist.
Met deze optie voegt u twee verplichte velden toe aan het standaardschema customAuthorization : subType en aud . Alle andere velden (endpoint , method , body params tokenInResponse ) blijven ongewijzigd. Wanneer subType afwezig is, is het gedrag identiek aan standaard douaneauthentificatie — bestaande configuraties worden niet beïnvloed.
subType: Stel in op"certificateCredential"om verificatie op basis van certificaten te activeren.aud: De publiekswaarde inbegrepen in de JWT cliëntbevestiging. Voor Microsoft Entra ID is dit hetzelfde als deendpointURL, maar deze moet altijd expliciet worden ingesteld.
De velden client_assertion en client_assertion_type worden nooit door de gebruiker geschreven. Zij worden automatisch geïnjecteerd door het platform bij runtime, onmiddellijk vóór de symbolische eindpuntvraag.
Hier volgt een voorbeeld van het verificatietype voor certificaatreferentie:
{
"type": "customAuthorization",
"subType": "certificateCredential",
"aud": "https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token",
"authorizationType": "Bearer",
"endpoint": "https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token",
"method": "POST",
"body": {
"bodyType": "form",
"bodyParams": {
"client_id": "<your-client-id>",
"grant_type": "client_credentials",
"scope": "https://api.example.com/.default"
}
},
"tokenInResponse": "json://access_token"
}
- Symbolische eindpunt URL: Dit moet HTTPS zijn. Vermijd URLs die
?bevatten — dit is een teken het toestemmings eindpunt werd gekleefd in plaats van het symbolische eindpunt. method: MoetPOSTzijn. OAuth symbolische eindpunten goedkeuren slechts POST- verzoeken.client_id: Mag niet leeg zijn en mag geen voorafgaande of navolgende witruimte hebben. Een lege waarde produceert een geldig-kijkt JWT die de Leverancier van de Identiteit met een ondoorzichtige fout zal verwerpen.scope: Wordt uitgedrukt als een tekenreeks met een spatie als scheidingsteken inbodyParams. Maximaal 1000 tekens.- Certificaat: Adobe beheert het certificaat en de persoonlijke sleutel — u uploadt of voert nooit een certificaat in. Alvorens de douaneactie in een levende reis te gebruiken, moet u Adobe bladcertificaat (niet de wortel CA) in uw Leverancier van de Identiteit registreren.
Hier ziet u een voorbeeld van het type headerverificatie:
{
"type": "customAuthorization",
"endpoint": "https://myapidomain.com/v2/user/login",
"method": "POST",
"headers": {
"x-retailer": "any value"
},
"body": {
"bodyType": "form",
"bodyParams": {
"secret": "any value",
"username": "any value"
}
},
"tokenInResponse": "json://token",
"cacheDuration": {
"expiryInResponse": "json://expiryDuration",
"timeUnit": "minutes"
},
"authorizationType": "header",
"tokenTarget": "x-auth-token"
}
Hier is een voorbeeld van de reactie van de login API vraag:
{
"token": "xDIUssuYE9beucIE_TFOmpdheTqwzzISNKeysjeODSHUibdzN87S",
"expiryDuration" : 5
}
bodyParams) worden gesteund.