KNF:SimpleSAMLphp-metadata: verschil tussen versies

Uit Kennisnet Developers Documentatie
Naar navigatie springen Naar zoeken springen
Regel 18: Regel 18:
 
</syntaxhighlight>
 
</syntaxhighlight>
   
 
Vervolgens kan de metarefresh module getest worden:
 
Test de metarefresh module direct:
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# cd modules/metarefresh/bin
 
[root@simplesamlphp]# cd modules/metarefresh/bin
 
[root@simplesamlphp]# ./metarefresh.php -s https://aselect.entree.kennisnet.nl/openaselect/profiles/saml2/
 
[root@simplesamlphp]# ./metarefresh.php -s https://aselect.entree.kennisnet.nl/openaselect/profiles/saml2/
 
</syntaxhighlight>
 
</syntaxhighlight>
LET OP! De uitvoer moet een PHP array zijn waarin de metadata xml is verwerkt. Als dit niet zo is dan is er mogelijk wat mis met bijvoorbeeld firewall toegang naar de authenticatieserver van de Entree Federatie. Zorg dat dit eerst goed functioneert!
+
'''LET OP:''' De uitvoer moet een PHP array zijn waarin de metadata XML van de Entree federatie verwerkt is. Als dit niet zo is dan is er mogelijk wat mis met bijvoorbeeld firewall toegang naar de authenticatieserver van de Entree Federatie. Zorg dat dit goed functioneert voordat u verder gaat.
Als dit wel werkt kunnen we verder met automatiseren.
 
 
   
Configureer de metarefresh module:
+
Configureer de metarefresh module voor het automatisch verversen van de metadata:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# cd /usr/share/simplesamlphp
 
[root@simplesamlphp]# cd /usr/share/simplesamlphp
Regel 35: Regel 32:
   
   
In de config-metarefresh.php komt de volgende inhoud:
+
In de config-metarefresh.php moet het volgende staan om het automatisch verversen mogelijk te maken:
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
<?php
 
<?php
Regel 58: Regel 55:
   
   
Vervolgens moet de volgende mappen structuur worden aangemaakt en de webserver gebruiker (www-data) rechten geven
+
Vervolgens moet de volgende mappen structuur worden aangemaakt en de webserver gebruiker (www-data) rechten gegeven worden:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# mkdir -p /usr/share/simplesamlphp/metadata/metadata_knf
 
[root@simplesamlphp]# mkdir -p /usr/share/simplesamlphp/metadata/metadata_knf
Regel 70: Regel 67:
 
</syntaxhighlight>
 
</syntaxhighlight>
   
Zoek in het bestand de regel op die start met 'metadata.sources'. Deze moet worden aangepast zodat deze er als volgt uit ziet:
+
Zoek in het bestand de regel op die start met ''metadata.sources''. Deze moet worden aangepast zodat deze er als volgt uit ziet:
  +
<syntaxhighlight lang="php">
 
'metadata.sources' => array(
 
'metadata.sources' => array(
 
array('type' => 'flatfile'),
 
array('type' => 'flatfile'),
 
array('type' => 'flatfile', 'directory' => 'metadata/metadata_knf'),
 
array('type' => 'flatfile', 'directory' => 'metadata/metadata_knf'),
 
),
 
),
  +
</syntaxhighlight>
   
 
Nu stellen we de cron module van simplesaml in:
 
Nu stellen we de cron module van simplesaml in:

Versie van 20 jan 2016 16:37

Instellen automatisch verversen metadata in SimpleSAMLphp

LET OP: Onderstaande instructies zijn gebaseerd op Debian, hierdoor kunnen de paden die worden gebruikt afwijken van uw configuratie.

  • Zorg ervoor dat een verbinding vanaf de SimpleSAMLphp server met aselect.entree.kennisnet.nl op poort 443 mogelijk is.
  • Er moeten 2 modules worden aangezet
  1. cron
  2. metarefresh

Ga naar de webserver op console of SSH en voer de volgende commando's uit om de modules aan te zetten:

[root@simplesamlphp]# cd /usr/share/simplesamlphp
[root@simplesamlphp]# touch modules/cron/enable
[root@simplesamlphp]# cp modules/cron/config-templates/*.php config/
[root@simplesamlphp]# touch modules/metarefresh/enable
[root@simplesamlphp]# cp modules/metarefresh/config-templates/*.php config/

Vervolgens kan de metarefresh module getest worden:

[root@simplesamlphp]# cd modules/metarefresh/bin
[root@simplesamlphp]# ./metarefresh.php -s https://aselect.entree.kennisnet.nl/openaselect/profiles/saml2/

LET OP: De uitvoer moet een PHP array zijn waarin de metadata XML van de Entree federatie verwerkt is. Als dit niet zo is dan is er mogelijk wat mis met bijvoorbeeld firewall toegang naar de authenticatieserver van de Entree Federatie. Zorg dat dit goed functioneert voordat u verder gaat.

Configureer de metarefresh module voor het automatisch verversen van de metadata:

[root@simplesamlphp]# cd /usr/share/simplesamlphp
[root@simplesamlphp]# nano config/config-metarefresh.php


In de config-metarefresh.php moet het volgende staan om het automatisch verversen mogelijk te maken:

<?php 
$config = array( 
  'conditionalGET' => true, 
  'sets' => array( 
     'kn' => array( 
        'cron'    => array('hourly'), 
        'sources' => array( 
           array( 
              'src'      => 'https://aselect.entree.kennisnet.nl/openaselect/profiles/saml2/', 
              'template' => array('simplesaml.nameidattribute' => 'uid'), 
           ), 
        ), 
        'expireAfter'  => 60*60*24*4, // Maximum 4 days cache time. 
        'outputDir'    => 'metadata/metadata_knf/', 
        'outputFormat' => 'flatfile', 
     ), 
  ), 
);


Vervolgens moet de volgende mappen structuur worden aangemaakt en de webserver gebruiker (www-data) rechten gegeven worden:

[root@simplesamlphp]# mkdir -p /usr/share/simplesamlphp/metadata/metadata_knf
[root@simplesamlphp]# chown www-data /usr/share/simplesamlphp/metadata/metadata_knf


Pas nu de centrale SimpleSAMLphp configuratie (config.php) aan zodat deze de automatisch opgehaalde metadata gaat gebruiken:

[root@simplesamlphp]# nano /etc/simplesamlphp/config.php

Zoek in het bestand de regel op die start met metadata.sources. Deze moet worden aangepast zodat deze er als volgt uit ziet:

       'metadata.sources' => array( 
               array('type' => 'flatfile'), 
               array('type' => 'flatfile', 'directory' => 'metadata/metadata_knf'), 
       ),

Nu stellen we de cron module van simplesaml in: [root@simplesamlphp]# nano config/module_cron.php

Deze moet er als volgt uit zien: <?php $config = array (

      'key' => '<TOKEN>', 
      'allowed_tags' => array('daily', 'hourly', 'frequent'), 
      'debug_message' => TRUE, 
      'sendemail' => TRUE, 

);

Verzin op de plaats van <TOKEN> een lange tekenreeks. Hiermee wordt voorkomen dat iemand vanaf buiten het zometeen in te stellen cron script kan aanroepen waardoor simplesaml overstuur raakt.

Stel nu de cronjob in: [root@simplesamlphp]# crontab -e Deze moet 1x per uur draaien. Zet er vervolgens in: 01 * * * * curl --silent "https://<YOUR_SERVER>/saml/module.php/cron/cron.php?key=<TOKEN>&tag=hourly" > /dev/null 2>&1

Vul bij <TOKEN> de hierboven ingestelde tekenreeks in; vul bij <YOUR_SERVER> de domeinnaam van de webserver waarop simplesaml te bereiken is in. Let op, het kan voorkomen dat simplesamlphp niet per se op https://<YOUR_SERVER>/saml/* geinstalleerd is maar op een ander pad. Houd dan het eigen pad aan. Ook in navolgende configuratiewijzigingen.

Als je wil weten of de cronjob het zou doen, roep dan het commando handmatig aan: [root@simplesamlphp]# curl 'https://<YOUR_SERVER>/saml/module.php/cron/cron.php?key=<TOKEN>&tag=hourly'

Dit commando geeft niks terug als het werkt en geeft de foutmelding terug als het niet werkt.

Als je de uitvoer wil zien, dus de metadata, dan moet je kijken in /usr/share/simplesamlphp/metadata/metadata_knf. [root@simplesamlphp]# ls -al /usr/share/simplesamlphp/metadata/metadata_knf/ total 32 drwxr-xr-x 2 www-data root 4096 Jan 19 15:07 . drwxr-xr-x 3 root root 4096 Jan 19 08:56 .. -rw-r--r-- 1 www-data www-data 10593 Jan 19 15:07 saml20-idp-remote.php -rw-r--r-- 1 www-data www-data 11083 Jan 19 15:07 saml20-sp-remote.php

Deze 2 PHP bestanden bevatten de volledige configuratie die nodig is om te koppelen met de Entree Federatie

Verwijder vervolgens als alles nog altijd werkt de oude metadata bestanden van de server. Zorg wel dat je deze eerst even backupt op een veilige plaats, voor het geval de koppeling op basis van automatische metadata toch niet werkt. [root@simplesamlphp]# rm /etc/simplesamlphp/metadata/saml20-idp-remote.php [root@simplesamlphp]# rm /etc/simplesamlphp/metadata/saml20-sp-remote.php

Controleer hierna of je nog altijd in kan loggen via de Federatie. Lukt het niet, zet dan de oude bestanden weer terug en controleer alle instellingen nogmaals. Lukt het nog niet, neem dan contact op met Kennisnet.