Xpression Manager/SSO: verschil tussen versies

Uit XpressionManager
Naar navigatie springen Naar zoeken springen
(Nieuwe pagina aangemaakt met '= Introductie = Alle request naar xpressionmanager zijn POST request met XML content. De inhoud van het <data> element dient AES Rijndael 128 bits (in CBC mode) ver...')
 
 
(6 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
= Introductie =
[[Bestand:Sso-uitleg.jpg|300px|right|sso-map]]
Alle request naar xpressionmanager zijn POST request met XML content. De inhoud van het <data> 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.
=Automatisch inloggen met SSO=
Door middel van SSO (sigle sign on) is het mogelijk om automatisch via een link ingelogd te worden.<br/>
Om deze koppeling te realiseren gaat u als volgt te werk:


Een XML request heeft in de basis onderstaande structuur.
==Stap 1 - vraag gegevens aan bij XM==
<?xml version="1.0" encoding="utf-8"?>
Voordat een koppeling gemaakt kan worden dient men de SSO gegevens voor het betreffende bedrijf aan te vragen via de [[http://helpdesk.xpressionmanager.nl helpdesk.xpressionmanager.nl]] Deze zijn nodig bij stap 5.<br/>
      <request>
Voor de aanvraag zijn wij onderstaande gegevens nodig:
        <identifier>Identifier</identifier>
* Licentienaam
      <data>
* Bedrijf uit bedrijvenlijst
        Encypted XML data
      </data>
      </request>


= Single Sign On verzoek uitvoeren =
==Stap 2 - vraag gegevens van de eindklant op==
  URL: klantnaam.xpressionmanager.nl/extern/generic_sso
Om een gebruiker automatisch in te laten loggen dient deze te bestaan binnen het bedrijf waarvoor u deze SSO heeft aangevraagd.<br/>
Er kan dan gekoppeld worden op bijvoorbeeld de naam en het e-mailadres (eventueel uit te breiden).
<pre>
In ons voorbeeld zouden de login gegevens bijvoorbeeld zijn:
Naam: Jan ter Merwede
E-mail: j.merwede@domein.nl
</pre>
==Stap 3 - koppel de organisatie structuur velden==
In ons voorbeeld is het veld 'naam' en 'email' uit de organisatiestructuur leidend in de SSO koppeling<br/>
Om dit kenbaar te maken ga je in de organisatiestructuur bij het veld naar het tabblad 'instellingen'<br/>
daar zie je onderaan de pagina een veld staan met de naam "XML tagnaam (als dit veld via een import of SSO koppeling moet worden gevuld)"<br/>
vul deze zowel in bij het veld waar de naam is staat met bijvoorbeeld 'name' en bij e-mail bijvoorbeeld 'email'<br/>
[[Bestand:Wiki-sso-screen.png|250px|thumb|left|sso-preview]]


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.
<br clear="all"/>
<?xml version="1.0" encoding="utf-8"?>
      <request>
        <identifier>Identifier</identifier>
      <data>
        <user>
            <email>niek@xpressionmanager.nl</email>
            <name>Niek Vugteveen</name>
        <user>
      </data>
      </request>


= Nieuwsbrief contacten importeren =
==Stap 4 - xml voor de het verzoek maken==
  URL: klantnaam.xpressionmanager.nl/extern/generic_contacts_import
De gebruikersgegevens verwerk je daarna in een xml omschrijving zoals onderstaand:
<pre><user>
<name>Jan Merwede</name>
<email>j.merwede@domein.nl</email>
</user>
</pre>
==Stap 5 - configureer php code==
[[Bestand:sso-config-setup.jpg]]
<br clear="all"/>
Zoals u in bovenstaande screenshot kan zien zijn er in de config enkele instellingen nodig.<br/>
Deze heeft u in de eerste stap van Xpression Manager ontvangen.<br/>
Het XML format met de gebruiker die aangemaakt is zal aangepast moeten worden naar bovenstaande formatering<br/>
of u zult de gegevens in één stuk door moeten typen:
<pre>
$mijnstring = '<user><name>Jan Merwede</name><email>j.merwede@domein.nl</email></user>';
</pre>


Contacten worden alleen aangemaakt, en niet overschreven of verwijderd. Hetzelfde geldt voor campagnes. Het verzoek ziet er zo uit:
==Stap 6 - volledige PHP Code==
<?xml version="1.0" encoding="utf-8"?>
<pre>
      <request>
<?php
        <identifier>Identifier</identifier>
////////////////////////////////////////////////////////////////////////
      <data>
// © 20149 Xpression Manager
        <user>
// helpdesk[@]xpressionmanager[.]nl
            <email>niek@xpressionmanager.nl</email>
// http://helpdesk.xpressionmanager.nl
            <name>Niek Vugteveen</name>
// SSO PHP SCRIPT V1.0
        <user>
// GEGEVENS VOOR CONFIG WORDEN U VOORAF AANGELEVERD
        <campaign>
////////////////////////////////////////////////////////////////////////
            <title>Mijn campagne</title>
            <contacts>
              <contact>
                <contactemail>ontvanger1@voorbeeld.nl</contactemail>
              </contact>
              <contact>
                <contactemail>ontvanger2@voorbeeld.nl</contactemail>
              </contact>
            </contacts>
        </campaign>
      </data>
      </request>


= Encryptievoorbeeld =
/*************
Zoals gezegd moet bij ieder request de inhoud van het <data> 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.
* CONFIG
**************/


  //deze functie is nodig om de encryptie compatible te maken met de openssl implementatie van ruby
//Encryptiesleutel voor SSO
  function pkcs5_pad ($text, $blocksize)
$key = base64_encode("---code invulen---");
  {
//Initialisatievector voor SSO
  $pad = $blocksize - (strlen($text) % $blocksize);
$iv = "---code invulen---";
  return $text . str_repeat(chr($pad), $pad);
//Identifier voor SSO
  }
$identifier = "---code invulen---";
 
//Eigen url voor de SSO (overeen komend met de licentienaam of de eigen url van de licentie)
  $cleartext = pkcs5_pad("hier komt de string", 16);
$url = "---url invulen---";
  $key = base64_decode("hier de key");
 
  $iv = base64_decode("hier de iv");
//de te encrypten string (XML met gebruiker gegevens
 
$mijnstring = '<user>'.
  $cryptogram = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $cleartext, MCRYPT_MODE_CBC, $iv);
'<name>---invulen---</name>'.
  $result = base64_encode($cryptogram);
'<email>---invulen---</email>'.
'</user>';
/*************
* ENDCONFIG
**************/
 
//encrypt met AES 128 bits encryptie
$cryptogram = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $mijnstring, MCRYPT_MODE_CBC,$iv);
//omzetten naar een leesbaar/overdraagbaar formaat
$result = base64_encode($cryptogram);
//de XML request samenstellen
$req = '<?xml version="1.0" encoding="UTF-8"?><request><identifier>'. $identifier .'</identifier><data>'. $result .'</data></request>';
//via CURL gaan we nu de request versturen
$postData = array('xml' => $req);
$ch =curl_init();
$options=array(
CURLOPT_URL => $url.'/extern/generic_sso',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postData
);
curl_setopt_array($ch, $options);
$output = curl_exec($ch);
 
/*************
* De output van de SSO is in XML.
* Hieruit lezen wij de url en zetten wij in de variabele $userssourl
**************/
 
$myXMLData ="<?xml version='1.0' encoding='UTF-8'?> ".$output;
$xml = simplexml_load_string($output) or die("Error: fout in koppeling");
$userssourl=$xml->ssolink;
 
/*************
* PHP variabele $userssourl is voorzien van de SSO link.
* Onderstaand is wordt deze als echo getoond.
* Een optie is om de gebruiker automatisch door te zetten via:
* header ("Location: $userssourl");
**************/
 
echo 'De url voor de sso koppeling is: http://'.$userssourl;
 
/*************
* Onderstaande is voor het automatisch doorverwijzen (de 5 staat voor het aantal seconden)
**************/
 
echo 'U wordt doorgeschakeld, een klein moment alstublieft.';
header('Refresh: 5; URL=http://'.$userssourl);
 
?>
 
</pre>
 
==Stap 7 - Link als output==
Als bovenstaande correct is ingevoerd krijgt u als output een link terug zoals onderstaand:
<pre>
uw-url.domeinnaam.nl/extern/generic_sso_logon/1001?u=86hg682f7sfgafc8def7ac7dfhga6esgfsfg8f214
</pre>
==F.A.Q. SSO==
Indien u tegen fouten aanloopt ontvangen wij graag de code tegemoet zodat wij deze kunnen nakijken</br>
Bekende problemen zijn:
* CURL wordt niet ondersteund op uw server
* XML veldnamen komen niet overeen met de organisatiestructuur
* gebruiker bestaat niet binnen XM
 
==Nieuwsbrief contacten importeren tbv Doelgroepbeheer==
Voor het importeren van contacten in doelgroepbeheer is de werking hetzelfde.<br/>
Enkel de URL en XML voor de data veranderen:<br/>
 
<pre>
URL: klantnaam.xpressionmanager.nl/extern/generic_contacts_import
</pre>
LET op: Contacten worden alleen aangemaakt, en niet overschreven of verwijderd. Hetzelfde geldt voor campagnes.<br/>
Het XML verzoek ziet er als volgt uit:
<pre>
        <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>
</pre>

Huidige versie van 12 nov 2014 om 14:30

sso-map
sso-map

Automatisch inloggen met SSO

Door middel van SSO (sigle sign on) is het mogelijk om automatisch via een link ingelogd te worden.
Om deze koppeling te realiseren gaat u als volgt te werk:

Stap 1 - vraag gegevens aan bij XM

Voordat een koppeling gemaakt kan worden dient men de SSO gegevens voor het betreffende bedrijf aan te vragen via de [helpdesk.xpressionmanager.nl] Deze zijn nodig bij stap 5.
Voor de aanvraag zijn wij onderstaande gegevens nodig:

  • Licentienaam
  • Bedrijf uit bedrijvenlijst

Stap 2 - vraag gegevens van de eindklant op

Om een gebruiker automatisch in te laten loggen dient deze te bestaan binnen het bedrijf waarvoor u deze SSO heeft aangevraagd.
Er kan dan gekoppeld worden op bijvoorbeeld de naam en het e-mailadres (eventueel uit te breiden).

In ons voorbeeld zouden de login gegevens bijvoorbeeld zijn:
Naam: Jan ter Merwede
E-mail: j.merwede@domein.nl

Stap 3 - koppel de organisatie structuur velden

In ons voorbeeld is het veld 'naam' en 'email' uit de organisatiestructuur leidend in de SSO koppeling
Om dit kenbaar te maken ga je in de organisatiestructuur bij het veld naar het tabblad 'instellingen'
daar zie je onderaan de pagina een veld staan met de naam "XML tagnaam (als dit veld via een import of SSO koppeling moet worden gevuld)"
vul deze zowel in bij het veld waar de naam is staat met bijvoorbeeld 'name' en bij e-mail bijvoorbeeld 'email'

sso-preview


Stap 4 - xml voor de het verzoek maken

De gebruikersgegevens verwerk je daarna in een xml omschrijving zoals onderstaand:

<user>
	<name>Jan Merwede</name>
	<email>j.merwede@domein.nl</email>
</user>

Stap 5 - configureer php code


Zoals u in bovenstaande screenshot kan zien zijn er in de config enkele instellingen nodig.
Deze heeft u in de eerste stap van Xpression Manager ontvangen.
Het XML format met de gebruiker die aangemaakt is zal aangepast moeten worden naar bovenstaande formatering
of u zult de gegevens in één stuk door moeten typen:

$mijnstring = '<user><name>Jan Merwede</name><email>j.merwede@domein.nl</email></user>';

Stap 6 - volledige PHP Code

<?php
////////////////////////////////////////////////////////////////////////
// © 20149 Xpression Manager
// helpdesk[@]xpressionmanager[.]nl
// http://helpdesk.xpressionmanager.nl
// SSO PHP SCRIPT V1.0
// GEGEVENS VOOR CONFIG WORDEN U VOORAF AANGELEVERD
////////////////////////////////////////////////////////////////////////

/*************
* CONFIG
**************/

//Encryptiesleutel voor SSO
$key = base64_encode("---code invulen---");
//Initialisatievector voor SSO
$iv = "---code invulen---";
//Identifier voor SSO
$identifier = "---code invulen---";
//Eigen url voor de SSO (overeen komend met de licentienaam of de eigen url van de licentie)
$url = "---url invulen---";

//de te encrypten string (XML met gebruiker gegevens
$mijnstring = '<user>'.
			'<name>---invulen---</name>'.
			'<email>---invulen---</email>'.
		'</user>';
/*************
* ENDCONFIG
**************/

//encrypt met AES 128 bits encryptie
$cryptogram = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $mijnstring, MCRYPT_MODE_CBC,$iv);
//omzetten naar een leesbaar/overdraagbaar formaat
$result = base64_encode($cryptogram);
//de XML request samenstellen
$req = '<?xml version="1.0" encoding="UTF-8"?><request><identifier>'. $identifier .'</identifier><data>'. $result .'</data></request>';
//via CURL gaan we nu de request versturen
$postData = array('xml' => $req);
$ch =curl_init();
$options=array(
CURLOPT_URL => $url.'/extern/generic_sso',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postData
);
curl_setopt_array($ch, $options);
$output = curl_exec($ch);

/*************
* De output van de SSO is in XML.
* Hieruit lezen wij de url en zetten wij in de variabele $userssourl
**************/

$myXMLData ="<?xml version='1.0' encoding='UTF-8'?> ".$output;
$xml = simplexml_load_string($output) or die("Error: fout in koppeling");
$userssourl=$xml->ssolink;

/*************
* PHP variabele $userssourl is voorzien van de SSO link.
* Onderstaand is wordt deze als echo getoond.
* Een optie is om de gebruiker automatisch door te zetten via:
* header ("Location: $userssourl");
**************/

echo 'De url voor de sso koppeling is: http://'.$userssourl;

/*************
* Onderstaande is voor het automatisch doorverwijzen (de 5 staat voor het aantal seconden)
**************/

echo 'U wordt doorgeschakeld, een klein moment alstublieft.';
header('Refresh: 5; URL=http://'.$userssourl);

?>

Stap 7 - Link als output

Als bovenstaande correct is ingevoerd krijgt u als output een link terug zoals onderstaand:

uw-url.domeinnaam.nl/extern/generic_sso_logon/1001?u=86hg682f7sfgafc8def7ac7dfhga6esgfsfg8f214

F.A.Q. SSO

Indien u tegen fouten aanloopt ontvangen wij graag de code tegemoet zodat wij deze kunnen nakijken
Bekende problemen zijn:

  • CURL wordt niet ondersteund op uw server
  • XML veldnamen komen niet overeen met de organisatiestructuur
  • gebruiker bestaat niet binnen XM

Nieuwsbrief contacten importeren tbv Doelgroepbeheer

Voor het importeren van contacten in doelgroepbeheer is de werking hetzelfde.
Enkel de URL en XML voor de data veranderen:

URL: klantnaam.xpressionmanager.nl/extern/generic_contacts_import

LET op: Contacten worden alleen aangemaakt, en niet overschreven of verwijderd. Hetzelfde geldt voor campagnes.
Het XML verzoek ziet er als volgt uit:

        <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>