KNF:SimpleSAMLphp-metadata: verschil tussen versies

Uit Kennisnet Developers Documentatie
Naar navigatie springen Naar zoeken springen
(24 tussenliggende versies door 2 gebruikers niet weergegeven)
Regel 1: Regel 1:
  +
{{Talen}}
  +
<br/>
  +
__TOC__
  +
 
==Instellen automatisch verversen metadata in SimpleSAMLphp==
 
==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.
+
'''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.
 
*Zorg ervoor dat een verbinding vanaf de SimpleSAMLphp server met ''aselect.entree.kennisnet.nl'' op poort 443 mogelijk is.
   
  +
===Stap 1: Inschakelen modules===
*Er moeten 2 modules worden aangezet
+
Allereerst moeten er twee modules worden aangezet:
 
# cron
 
# cron
 
# metarefresh
 
# metarefresh
   
Ga naar de webserver op console of SSH en voer de volgende commando's uit.
+
Ga naar de webserver op console of SSH en voer de volgende commando's uit om de modules aan te zetten:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# cd /usr/share/simplesamlphp
 
[root@simplesamlphp]# cd /usr/share/simplesamlphp
Regel 18: Regel 23:
 
</syntaxhighlight>
 
</syntaxhighlight>
   
  +
===Stap 2: Testen en configureren metarefresh module===
 
Test de metarefresh module direct:
+
Vervolgens kan de metarefresh module getest worden:
 
<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]# php ./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 mogelijk uw firewall toegang naar de authenticatieserver van de Entree Federatie niet goed geconfigureerd. Zorg dat dit goed functioneert voordat u verder gaat met de onderstaande stappen.
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 34: Regel 37:
 
</syntaxhighlight>
 
</syntaxhighlight>
   
 
In de config-metarefresh.php moet het volgende staan om het automatisch verversen mogelijk te maken:
 
In de config-metarefresh.php komt de volgende inhoud:
 
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
<?php
 
<?php
Regel 45: Regel 47:
 
'sources' => array(
 
'sources' => array(
 
array(
 
array(
'src' => 'https://aselect.entree.kennisnet.nl/openaselect/profiles/saml2/',
+
// Bij livegang hoeft alleen deze waarde aangepast te worden naar aselect.entree.kennisnet.nl
  +
'src' => 'https://aselect-s.entree.kennisnet.nl/openaselect/profiles/saml2/',
 
'template' => array('simplesaml.nameidattribute' => 'uid'),
 
'template' => array('simplesaml.nameidattribute' => 'uid'),
 
),
 
),
Regel 57: Regel 60:
 
</syntaxhighlight>
 
</syntaxhighlight>
   
  +
===Stap 3: Mappen structuur aanmaken===
 
Vervolgens moet de volgende mappen structuur worden aangemaakt en de webserver gebruiker (www-data) rechten geven
+
Vervolgens moet de volgende mappen structuur worden aangemaakt:
 
<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
  +
</syntaxhighlight>
  +
  +
===Stap 4: Rechten webserver instellen===
  +
Nu moet de webserver gebruiker (www-data) rechten gegeven worden:
  +
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# chown www-data /usr/share/simplesamlphp/metadata/metadata_knf
 
[root@simplesamlphp]# chown www-data /usr/share/simplesamlphp/metadata/metadata_knf
 
</syntaxhighlight>
 
</syntaxhighlight>
   
  +
===Stap 5: Aanpassen SimpleSAMLphp configuratie===
 
 
Pas nu de centrale SimpleSAMLphp configuratie (config.php) aan zodat deze de automatisch opgehaalde metadata gaat gebruiken:
 
Pas nu de centrale SimpleSAMLphp configuratie (config.php) aan zodat deze de automatisch opgehaalde metadata gaat gebruiken:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
[root@simplesamlphp]# nano /etc/simplesamlphp/config.php
+
[root@simplesamlphp]# nano /etc/simplesamlphp/config/config.php
 
</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>
   
  +
=== Stap 6: Instellen cronjob===
Nu stellen we de cron module van simplesaml in:
+
Nu stellen we de cron module van SimpleSAML in:
 
[root@simplesamlphp]# nano config/module_cron.php
 
[root@simplesamlphp]# nano config/module_cron.php
   
 
Deze moet er als volgt uit zien:
 
Deze moet er als volgt uit zien:
  +
<syntaxhighlight lang="php">
 
<?php
 
<?php
 
$config = array (
 
$config = array (
Regel 85: Regel 97:
 
'allowed_tags' => array('daily', 'hourly', 'frequent'),
 
'allowed_tags' => array('daily', 'hourly', 'frequent'),
 
'debug_message' => TRUE,
 
'debug_message' => TRUE,
'sendemail' => TRUE,
+
'sendemail' => FALSE,
 
);
 
);
  +
</syntaxhighlight>
   
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.
+
Vul op de plaats van ''<TOKEN>'' een lange tekenreeks in. Hiermee wordt voorkomen dat iemand vanaf buiten het cron script, dat in de volgende stap wordt gemaakt, kan aanroepen.
   
 
Stel nu de cronjob in:
 
Stel nu de cronjob in:
  +
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# crontab -e
 
[root@simplesamlphp]# crontab -e
  +
</syntaxhighlight>
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
 
   
  +
Deze cronjob moet één keer per uur worden uitgevoerd:
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.
 
  +
<syntaxhighlight lang="bash">
 
01 * * * * curl --silent "https://<YOUR_SERVER>/simplesaml/module.php/cron/cron.php?key=<TOKEN>&tag=hourly" > /dev/null 2>&1
  +
</syntaxhighlight>
   
  +
Vul bij ''<TOKEN>'' de eerder ingestelde tekenreeks in; vul bij ''<YOUR_SERVER>'' de domeinnaam in van de webserver waarop uw SimpleSAML instantie te bereiken is.<br/><br/>
Als je wil weten of de cronjob het zou doen, roep dan het commando handmatig aan:
 
  +
'''LET OP:''' Het kan voorkomen dat SimpleSAMLphp '''NIET''' per se op https://<YOUR_SERVER>/simplesaml/* geïnstalleerd is, maar op een ander pad. Houd in dat geval het eigen pad aan. Dit geldt ook voor de configuratiewijzigingen hieronder.<br/><br/>
[root@simplesamlphp]# curl 'https://<YOUR_SERVER>/saml/module.php/cron/cron.php?key=<TOKEN>&tag=hourly'
 
   
  +
Om te testen of de cronjob goed functioneert kan hij handmatig worden aangeroepen:
Dit commando geeft niks terug als het werkt en geeft de foutmelding terug als het niet werkt.
 
  +
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# curl 'https://<YOUR_SERVER>/simplesaml/module.php/cron/cron.php?key=<TOKEN>&tag=hourly'
  +
</syntaxhighlight>
 
Dit commando geeft geen resultaat als de cronjob werkt en geeft een foutmelding de cronjob niet goed werkt.
   
  +
===Stap 8: Controleren en testen===
Als je de uitvoer wil zien, dus de metadata, dan moet je kijken in
 
  +
Om de uitvoer te bekijken gaat u naar:
/usr/share/simplesamlphp/metadata/metadata_knf.
 
  +
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# ls -al /usr/share/simplesamlphp/metadata/metadata_knf/
 
[root@simplesamlphp]# ls -al /usr/share/simplesamlphp/metadata/metadata_knf/
  +
</syntaxhighlight>
  +
<br/>
  +
'''Voorbeeld van de uitvoer:'''
  +
<syntaxhighlight lang="bash">
 
total 32
 
total 32
 
drwxr-xr-x 2 www-data root 4096 Jan 19 15:07 .
 
drwxr-xr-x 2 www-data root 4096 Jan 19 15:07 .
Regel 110: Regel 135:
 
-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 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
 
-rw-r--r-- 1 www-data www-data 11083 Jan 19 15:07 saml20-sp-remote.php
  +
</syntaxhighlight>
 
De twee PHP bestanden (''saml20-idp-remote.php'' en ''saml20-sp-remote.php'') bevatten de volledige configuratie die nodig is om te koppelen met de Entree Federatie.
   
  +
Controleer of de koppeling met de Entree federatie nog werkt.<br/>
Deze 2 PHP bestanden bevatten de volledige configuratie die nodig is om te koppelen met de Entree Federatie
 
  +
'''Maak een backup van de bestanden'''<br/>
 
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.
+
Verwijder vervolgens de oude metadata bestanden van de server:
  +
<syntaxhighlight lang="bash">
 
[root@simplesamlphp]# rm /etc/simplesamlphp/metadata/saml20-idp-remote.php
 
[root@simplesamlphp]# rm /etc/simplesamlphp/metadata/saml20-idp-remote.php
 
[root@simplesamlphp]# rm /etc/simplesamlphp/metadata/saml20-sp-remote.php
 
[root@simplesamlphp]# rm /etc/simplesamlphp/metadata/saml20-sp-remote.php
  +
</syntaxhighlight>
  +
<br/>
  +
Controleer hierna of de koppeling met de Entree federatie nog steeds werkt. <br/>
  +
Als het inloggen via de Entree federatie niet meer werkt zet dan de oude bestanden weer terug en controleer de stappen en instellingen hierboven nogmaals.
   
  +
Indien het configureren niet lukt kunt u contact opnemen met Kennisnet
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.
 
 
 
 
 
 
   
[[Categorie:Kennisnet Federatie]]
 
 
[[Categorie:Entree Federatie]]
 
[[Categorie:Entree Federatie]]
[[Categorie:Handleiding]]
 

Versie van 16 aug 2018 15:39

Nl.gif Nederlands En.gif English


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.

Stap 1: Inschakelen modules

Allereerst moeten er twee 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/

Stap 2: Testen en configureren metarefresh module

Vervolgens kan de metarefresh module getest worden:

[root@simplesamlphp]# cd modules/metarefresh/bin
[root@simplesamlphp]# php ./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 mogelijk uw firewall toegang naar de authenticatieserver van de Entree Federatie niet goed geconfigureerd. Zorg dat dit goed functioneert voordat u verder gaat met de onderstaande stappen.

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( 
              // Bij livegang hoeft alleen deze waarde aangepast te worden naar aselect.entree.kennisnet.nl
              'src'      => 'https://aselect-s.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', 
     ), 
  ), 
);

Stap 3: Mappen structuur aanmaken

Vervolgens moet de volgende mappen structuur worden aangemaakt:

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

Stap 4: Rechten webserver instellen

Nu moet de webserver gebruiker (www-data) rechten gegeven worden:

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

Stap 5: Aanpassen SimpleSAMLphp configuratie

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

[root@simplesamlphp]# nano /etc/simplesamlphp/config/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'), 
       ),

Stap 6: Instellen cronjob

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' => FALSE, 
);

Vul op de plaats van <TOKEN> een lange tekenreeks in. Hiermee wordt voorkomen dat iemand vanaf buiten het cron script, dat in de volgende stap wordt gemaakt, kan aanroepen.

Stel nu de cronjob in:

[root@simplesamlphp]# crontab -e

Deze cronjob moet één keer per uur worden uitgevoerd:

01 * * * * curl --silent "https://<YOUR_SERVER>/simplesaml/module.php/cron/cron.php?key=<TOKEN>&tag=hourly" > /dev/null 2>&1

Vul bij <TOKEN> de eerder ingestelde tekenreeks in; vul bij <YOUR_SERVER> de domeinnaam in van de webserver waarop uw SimpleSAML instantie te bereiken is.

LET OP: Het kan voorkomen dat SimpleSAMLphp NIET per se op https://<YOUR_SERVER>/simplesaml/* geïnstalleerd is, maar op een ander pad. Houd in dat geval het eigen pad aan. Dit geldt ook voor de configuratiewijzigingen hieronder.

Om te testen of de cronjob goed functioneert kan hij handmatig worden aangeroepen:

[root@simplesamlphp]# curl 'https://<YOUR_SERVER>/simplesaml/module.php/cron/cron.php?key=<TOKEN>&tag=hourly'

Dit commando geeft geen resultaat als de cronjob werkt en geeft een foutmelding de cronjob niet goed werkt.

Stap 8: Controleren en testen

Om de uitvoer te bekijken gaat u naar:

[root@simplesamlphp]# ls -al /usr/share/simplesamlphp/metadata/metadata_knf/


Voorbeeld van de uitvoer:

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

De twee PHP bestanden (saml20-idp-remote.php en saml20-sp-remote.php) bevatten de volledige configuratie die nodig is om te koppelen met de Entree Federatie.

Controleer of de koppeling met de Entree federatie nog werkt.
Maak een backup van de bestanden
Verwijder vervolgens de oude metadata bestanden van de server:

[root@simplesamlphp]# rm /etc/simplesamlphp/metadata/saml20-idp-remote.php
[root@simplesamlphp]# rm /etc/simplesamlphp/metadata/saml20-sp-remote.php


Controleer hierna of de koppeling met de Entree federatie nog steeds werkt.
Als het inloggen via de Entree federatie niet meer werkt zet dan de oude bestanden weer terug en controleer de stappen en instellingen hierboven nogmaals.

Indien het configureren niet lukt kunt u contact opnemen met Kennisnet