Xpression Manager/SSO: verschil tussen versies
Regel 35: | Regel 35: | ||
<data> | <data> | ||
<user> | <user> | ||
<email> | <email>gebruiker@xpressionmanager.nl</email> | ||
<name> | <name>Jan ter Merwede</name> | ||
<user> | <user> | ||
<campaign> | <campaign> |
Versie van 16 jul 2013 09:15
Introductie
Alle request naar xpressionmanager zijn POST request met XML content. De inhoud van het element dient AES Rijndael 128 bits (in CBC mode) versleuteld te worden met een key en een initialisatie vector (VI), die door Xpression worden aangeleverd. Tesamen met de identifier vormen zij de authenticatiebasis.
Een XML request heeft in de basis onderstaande structuur.
<?xml version="1.0" encoding="utf-8"?> <request> <identifier>Identifier</identifier> Encypted XML data </request>
Single Sign On verzoek uitvoeren
URL: klantnaam.xpressionmanager.nl/extern/generic_sso
Een SSO verzoek dient naast de standaard structuur een <user> element met een <email> en een <naam> element te bevatten. Voor uw gemak is onderstaande data niet versleuteld.
<?xml version="1.0" encoding="utf-8"?> <request> <identifier>Identifier</identifier> <user> <email>mail@xpressionmanager.nl</email> <name>Jan ter Merwede</name> <user> </request>
Nieuwsbrief contacten importeren
URL: klantnaam.xpressionmanager.nl/extern/generic_contacts_import
Contacten worden alleen aangemaakt, en niet overschreven of verwijderd. Hetzelfde geldt voor campagnes. Het verzoek ziet er zo uit:
<?xml version="1.0" encoding="utf-8"?> <request> <identifier>Identifier</identifier> <user> <email>gebruiker@xpressionmanager.nl</email> <name>Jan ter Merwede</name> <user> <campaign> <title>Mijn campagne</title> <contacts> <contact> <contactemail>ontvanger1@voorbeeld.nl</contactemail> </contact> <contact> <contactemail>ontvanger2@voorbeeld.nl</contactemail> </contact> </contacts> </campaign> </request>
Encryptievoorbeeld
Zoals gezegd moet bij ieder request de inhoud van het element worden versleuteld. Je ontvangt van Xpression 3 dingen: een identifier, een vi en een key. In onderstaand PHP voorbeeld zie je hoe je deze kunt gebruiken om data te versleutelen te maken.
//deze functie is nodig om de encryptie compatible te maken met de openssl implementatie van ruby function pkcs5_pad ($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } $cleartext = pkcs5_pad("hier komt de string", 16); $key = base64_decode("hier de key"); $iv = base64_decode("hier de iv"); $cryptogram = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $cleartext, MCRYPT_MODE_CBC, $iv); $result = base64_encode($cryptogram);