cs:tech:sp:simplesamlphp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
cs:tech:sp:simplesamlphp [2019/12/13 20:16]
Jan Oppolzer [SimpleSAMLphp]
cs:tech:sp:simplesamlphp [2019/12/16 09:39] (current)
Jan Oppolzer aktualizace na 1.18.3
Line 1: Line 1:
 ====== SimpleSAMLphp ====== ====== SimpleSAMLphp ======
  
-FIXMEAktualizovat na verzi 1.18.3.+Tento návod se zabývá instalací a konfigurací [[https://​simplesamlphp.org|SimpleSAMLphp]] verze 1.18.3 ​pouze v podobě poskytovatele služby (Service Provider, SP), nikoliv poskytovatele identity (Identity Provider, IdP). Pro IdP silně doporučujeme použít [[cs:​tech:​idp:​shibboleth|Shibboleth IdP]].
  
-Tento návod se zabývá instalací a konfigurací ​[[https://simplesamlphp.org|SimpleSAMLphp]] verze 1.15.4 pouze podobě poskytovatele služby (Service Provider, SP), nikoliv poskytovatele identity (Identity Provider, IdP). Pro IdP silně doporučujeme použít ​[[cs:tech:idp|Shibboleth IdP]].+V návodu budeme používat linuxovou distribuci ​[[https://www.debian.org|Debian]] v jeho poslední verzi 10 s kódovým označením [[https://​www.debian.org/​releases/​buster/​|Buster]]. Používáte-li jinou distribuci, některé kroky (např. instalace balíčků) se u vás budou odpovídajícím způsobem lišit.
  
-V návodu budeme používat linuxovou distribuci [[https://​www.debian.org|Debian]] v jeho poslední verzi 9 s kódovým označením [[https://​www.debian.org/​releases/​stretch/​|Stretch]]. Používáte-li jinou distribuci, některé kroky (např. instalace balíčků) se u vás budou odpovídajícím způsobem lišit. +Návod provází kompletní instalací a konfigurací SimpleSAMLphp včetně zdrojů metadat federace [[cs:tech:summary|eduID.cz]],​ [[https://​www.hostel.eduid.cz|Hostel IdP]] a [[cs:​tech:​socialidps]] ​(Facebook, GitHub, Google, LinkedIn, ORCID).
- +
-Návod provází kompletní instalací a konfigurací SimpleSAMLphp včetně zdrojů metadat federace [[https://​www.eduid.cz/​cs/​tech/summary|eduID.cz]],​ [[https://​www.hostel.eduid.cz|Hostel IdP]] a Social IdPs (Facebook, GitHub, Google, LinkedIn, ORCID).+
  
 ===== Instalace ===== ===== Instalace =====
  
-Před samotnou instalací zkontrolujeme,​ že máme v systému certifikát kořenové certifikační autority DigiCert (//DigiCert Assured ID Root CA//). HTTP server, ze kterého budeme stahovat metadata (''​metadata.eduid.cz''​), má HTTPS certifikát vydaný touto autoritou a bez její znalosti aplikace jako ''​wget''​''​curl'' ​aj. při pokusu o stažení metadat zahlásí chybu a odmítnou se na server připojit. Vyzkoušíme,​ zda dokážeme stáhnout metadata federace eduID.cz:+Před samotnou instalací zkontrolujeme,​ že máme v systému certifikát kořenové certifikační autority DigiCert (//DigiCert Assured ID Root CA//). HTTP server, ze kterého budeme stahovat metadata (//metadata.eduid.cz//), má HTTPS certifikát vydaný touto autoritou a bez její znalosti aplikace jako //wget////curl// aj. při pokusu o stažení metadat zahlásí chybu a odmítnou se na server připojit. Vyzkoušíme,​ zda dokážeme stáhnout metadata federace eduID.cz:
  
 <code bash> <code bash>
 # Pokusné stažení metadat federace eduID.cz # Pokusné stažení metadat federace eduID.cz
-wget https://​metadata.eduid.cz/​entities/​eduid+wget -O/​dev/​null ​https://​metadata.eduid.cz/​entities/​eduid
 </​code>​ </​code>​
  
-V případě, že dojde ke stažení souboru ''​eduid'', ​je vše v pořádku. Pokud se však soubor nestáhne a v terminálu ​uvidíme ​následující:​+V případě, že je vše v pořádku, uvidíte úspěšný pokus o stažení metadat. V opačném případě ​v terminálu ​uvidíte ​následující:​
  
 <code text> <code text>
---2016-03-29 14:35:32--  https://​metadata.eduid.cz/​entities/​eduid +--2019-12-16 08:25:54--  https://​metadata.eduid.cz/​entities/​eduid 
-Resolving metadata.eduid.cz (metadata.eduid.cz)... ​195.113.205.140 +Resolving metadata.eduid.cz (metadata.eduid.cz)... ​2001:​718:​ff05:​202::​23,​ 78.128.216.23 
-Connecting to metadata.eduid.cz (metadata.eduid.cz)|195.113.205.140|:443... connected.+Connecting to metadata.eduid.cz (metadata.eduid.cz)|2001:​718:​ff05:​202::​23|:443... connected.
 ERROR: The certificate of ‘metadata.eduid.cz’ is not trusted. ERROR: The certificate of ‘metadata.eduid.cz’ is not trusted.
-ERROR: The certificate of ‘metadata.eduid.cz’ ​hasn'​t ​got a known issuer.+ERROR: The certificate of ‘metadata.eduid.cz’ ​doesn'​t ​have a known issuer.
 </​code>​ </​code>​
  
-Doinstalujeme balíček ​''​ca-certificates''​:+Doinstalujeme balíček ​//ca-certificates//:
  
 <code bash> <code bash>
 # Instalace balíčku s certifikáty CA # Instalace balíčku s certifikáty CA
-apt-get install ca-certificates+apt install --no-install-recommends ​ca-certificates
 </​code>​ </​code>​
  
Line 38: Line 36:
  
 <code bash> <code bash>
-# Instalace Apache a PHP5 +# Instalace Apache a PHP 
-apt-get install apache2 ​php5+apt install apache2 ​php php-xml
 </​code>​ </​code>​
  
-SimpleSAMLphp vyžaduje některá rozšíření interpretru PHP. Většina z nich je však zakompilovaná přímo v distribučním balíčku PHP anebo lze v případě potřeby snadno doinstalovat odpovídající balíček z distribuce. Seznam rozšíření:​+SimpleSAMLphp ​[[https://​simplesamlphp.org/​docs/​stable/​simplesamlphp-install#​section_1|vyžaduje]] některá rozšíření interpretru PHP. Většina z nich je však zakompilovaná přímo v distribučním balíčku PHP anebo lze v případě potřeby snadno doinstalovat odpovídající balíček z distribuce. Seznam rozšíření:​
  
-  * vždy: ​''​date''​''​dom''​''​hash''​''​libxml''​''​openssl''​''​pcre''​''​SPL''​''​zlib''​, +  * vždy: ​//date////dom////hash////libxml////openssl////pcre////SPL////zlib////json////​mbstring//​,
-  * při použití šifrování anebo digitálních podpisů: ''​mcrypt''​, +
-  * při ukládání informací o sezení do memcache: ''​memcache''​,+
   * při použití databáze:   * při použití databáze:
-    * vždy: ​''​PDO''​+    * vždy: ​//PDO//
-    * závislosti na použité databázi: ​''​mysql''​''​pgsql''​, ...+    * závislosti na použité databázi: ​//mysql////pgsql//, ...
  
 (V případě nejistoty můžeme použít známé ''<?​php PHPInfo(); ?>''​ pro zjištění,​ co náš interpret aktuálně podporuje.) (V případě nejistoty můžeme použít známé ''<?​php PHPInfo(); ?>''​ pro zjištění,​ co náš interpret aktuálně podporuje.)
Line 55: Line 51:
 **Doporučený způsob instalace** je instalace ze zdrojových kódů, nikoliv z balíčkovacího systému, kde je SimpleSAMLphp téměř vždy velice zastaralé. Musíme však nejprve stáhnout archiv se zdrojovými kódy ze stránek [[https://​simplesamlphp.org/​download|projektu]] anebo "​release"​ archiv z repozitáře na [[https://​github.com/​simplesamlphp/​simplesamlphp/​releases|GitHubu]]. Stahujeme-li archiv z Internetu, **nezapomeneme zkontrolovat kontrolní součet** archivu! (Kontrolní součet archivu nalezneme na [[https://​simplesamlphp.org/​download|stránce projektu SimpleSAMLphp]],​ kde je archiv k dispozici ke stažení.) **Doporučený způsob instalace** je instalace ze zdrojových kódů, nikoliv z balíčkovacího systému, kde je SimpleSAMLphp téměř vždy velice zastaralé. Musíme však nejprve stáhnout archiv se zdrojovými kódy ze stránek [[https://​simplesamlphp.org/​download|projektu]] anebo "​release"​ archiv z repozitáře na [[https://​github.com/​simplesamlphp/​simplesamlphp/​releases|GitHubu]]. Stahujeme-li archiv z Internetu, **nezapomeneme zkontrolovat kontrolní součet** archivu! (Kontrolní součet archivu nalezneme na [[https://​simplesamlphp.org/​download|stránce projektu SimpleSAMLphp]],​ kde je archiv k dispozici ke stažení.)
  
-Stažený archiv umístíme do adresáře ​''​/opt/src''​, rozbalíme do ''​/opt'' ​a vytvoříme na něj symbolický odkaz ''​/​opt/​simplesamlphp''​. S tímto přístupem můžeme v případě potřeby velmi snadno přepnout na jinou verzi v budoucnu -- např. při aktualizaci na novou verzi.+Stažený archiv umístíme do adresáře ​///opt/src//, rozbalíme do ///opt// a vytvoříme na něj symbolický odkaz ///​opt/​simplesamlphp//. S tímto přístupem můžeme v případě potřeby velmi snadno přepnout na jinou verzi v budoucnu -- např. při aktualizaci na novou verzi.
  
 <code bash> <code bash>
 # Instalace SimpleSAMLphp ze zdrojových kódů # Instalace SimpleSAMLphp ze zdrojových kódů
-mkdir -p /opt/src +cd /opt/ 
-cd /opt/src +wget https://​github.com/​simplesamlphp/​simplesamlphp/​releases/​download/​v1.18.3/​simplesamlphp-1.18.3.tar.gz 
-wget https://​github.com/​simplesamlphp/​simplesamlphp/​releases/​download/​v1.15.4/​simplesamlphp-1.15.4.tar.gz +echo 'c6cacf821ae689de6547092c5d0c854e787bfcda716096b1ecf39ad3b3882500 ​ ​simplesamlphp-1.18.3.tar.gz'​ | sha256sum -c 
-echo '349cf5d9f9ecbbced0e6f6794d26d5242fc9dafbd34268aeeb200182c24f88a5 ​ ​simplesamlphp-1.15.4.tar.gz'​ | sha256sum -c +tar -xzf simplesamlphp-1.18.3.tar.gz 
-cd .. +ln -snf simplesamlphp-1.18.simplesamlphp
-tar -xzf src/simplesamlphp-1.15.4.tar.gz +
-ln -snf simplesamlphp-1.15.simplesamlphp+
 </​code>​ </​code>​
  
Line 75: Line 69:
 ==== Apache ==== ==== Apache ====
  
-Pro SimpleSAMLphp vytvoříme v konfiguraci Apache alias ''​simplesaml''​, který odkazuje na námi vytvořený symbolický odkaz ''​/​opt/​simplesamlphp'' ​směrující na odpovídající verzi SimpleSAMLphp.+Pro SimpleSAMLphp vytvoříme v konfiguraci Apache alias //simplesaml//, který odkazuje na námi vytvořený symbolický odkaz ///​opt/​simplesamlphp// směrující na odpovídající verzi SimpleSAMLphp.
  
 <code apache> <code apache>
Line 85: Line 79:
 </​code>​ </​code>​
  
-//​Poznámka://​ Chceme-li, aby SimpleSAMLphp bylo dostupné na jiné adrese než ''​URL_SERVERU/simplesaml'' ​(např. ​''​/​simplesamlphp''​), musíme změnit //​baseurlpath//​ v ''​config/​config.php''​, protože to je standardně nastaveno na ''​/simplesaml''​.+//​Poznámka://​ Chceme-li, aby SimpleSAMLphp bylo dostupné na jiné adrese než //<​nowiki>​https://​HOSTNAME/simplesaml</​nowiki>// ​(např. ​///​simplesamlphp//), musíme změnit //​baseurlpath//​ v //config/​config.php//, protože to je standardně nastaveno na ///simplesaml//.
  
 Po úpravě konfigurace nezapomeneme znovu nahrát konfiguraci Apache. Po úpravě konfigurace nezapomeneme znovu nahrát konfiguraci Apache.
Line 91: Line 85:
 <code bash> <code bash>
 # Znovunačtení konfiguračních souborů Apache # Znovunačtení konfiguračních souborů Apache
-service apache2 ​reload+systemctl ​reload ​apache2
 </​code>​ </​code>​
  
 ==== SimpleSAMLphp ==== ==== SimpleSAMLphp ====
  
-//Všechny níže uvedené cesty jsou **relativní** k adresáři// ''​/​opt/​simplesamlphp''​.+//Všechny níže uvedené cesty jsou **relativní** k adresáři /​opt/​simplesamlphp//.
  
-Před samotnou konfigurací vytvoříme adresáře, do nichž se budou stahovat příslušná metadata. Tyto adresáře musí být přístupné pro zápis uživateli, pod kterým na serveru běží HTTP démon. V případě Apache na distribuci Debian je to uživatel ​''​www-data'' ​ze skupiny ​''​www-data''​.+Před samotnou konfigurací vytvoříme adresáře, do nichž se budou stahovat příslušná metadata. Tyto adresáře musí být přístupné pro zápis uživateli, pod kterým na serveru běží HTTP démon. V případě Apache na distribuci Debian je to uživatel ​//www-data// ze skupiny ​//www-data//.
  
 <code bash> <code bash>
 # Vytvoření adresářů pro metadata # Vytvoření adresářů pro metadata
 cd /​opt/​simplesamlphp/​metadata cd /​opt/​simplesamlphp/​metadata
-mkdir eduid hostel ​socialidp +mkdir eduidcz ​hostel ​socialidps 
-chown www-data:​www-data ​eduid hostel ​socialidp+chown www-data:​www-data ​eduidcz ​hostel ​socialidps
 </​code>​ </​code>​
  
-Budeme také muset definovat bezpečnou "​sůl",​ kterou si vygenerujeme a poté vložíme do konfiguračního souboru ​''​config/​config.php''​.+Budeme také muset definovat bezpečnou "​sůl",​ kterou si vygenerujeme a poté vložíme do konfiguračního souboru ​//config/​config.php//.
  
 <code bash> <code bash>
Line 114: Line 108:
 </​code>​ </​code>​
  
-Základním konfiguračním souborem SimpleSAMLphp je ''​config/​config.php''​, kde nastavíme administrátorské heslo, náhodně vygenerovanou "​sůl",​ technický kontakt, časovou zónu a další.+Základním konfiguračním souborem SimpleSAMLphp je //config/​config.php//, kde nastavíme administrátorské heslo, náhodně vygenerovanou "​sůl",​ technický kontakt, časovou zónu a další.
  
 <code php> <code php>
Line 120: Line 114:
 $config = array( $config = array(
  
-  '​auth.adminpassword' ​     => 'N2jak0_Siln0-Heslo',+  '​auth.adminpassword' ​     => '20ff641165dadffcae2f62b97774e2c63531bc8f',
   '​secretsalt' ​             => '​lhbogwzt0m32khnrh8d39p39tzxxyyhr',​   '​secretsalt' ​             => '​lhbogwzt0m32khnrh8d39p39tzxxyyhr',​
-  '​technicalcontact_name' ​  => 'Jan Oppolzer', +  '​technicalcontact_name' ​  => 'Kryštof Šáteček', 
-  '​technicalcontact_email' ​ => 'jan.oppolzer@cesnet.cz',+  '​technicalcontact_email' ​ => 'krystof.satecek@example.org',
   '​timezone' ​               => '​Europe/​Prague',​   '​timezone' ​               => '​Europe/​Prague',​
  
-  '​authproc.sp'​ => array( +  '​authproc.sp'​ => [ 
-    51 => array('​class'​ => '​core:​AttributeMap', ​  '​oid2name'​)+    51 => '​class'​ => '​core:​AttributeMap', ​  '​oid2name' ​]
-    52 => array('​class'​ => '​core:​AttributeMap', ​  '​urn2name'​)+    52 => '​class'​ => '​core:​AttributeMap', ​  '​urn2name' ​]
-    60 => array('​class'​ => '​core:​GenerateGroups',​ '​eduPersonAffiliation'​),+    60 => '​class'​ => '​core:​GenerateGroups',​ '​eduPersonAffiliation' ​],
     90 => '​core:​LanguageAdaptor',​     90 => '​core:​LanguageAdaptor',​
-  ​),+  ​],
  
-  '​metadata.sources'​ => array( +  '​metadata.sources'​ => [ 
-    ​array ('​type'​ => '​flatfile',​ '​directory'​ => '​metadata/​eduid')+    ​'​type'​ => '​flatfile',​ '​directory'​ => '​metadata/​eduidcz' ​]
-    ​array ('​type'​ => '​flatfile',​ '​directory'​ => '​metadata/​hostel'​)+    ​'​type'​ => '​flatfile',​ '​directory'​ => '​metadata/​hostel' ​]
-    ​array ('​type'​ => '​flatfile',​ '​directory'​ => '​metadata/​socialidp')+    ​'​type'​ => '​flatfile',​ '​directory'​ => '​metadata/​socialidps' ​]
-  ​),+  ​],
  
 ); );
Line 144: Line 138:
 Při provozu SimpleSAMLphp je potřeba mít vygenerovaný pár certifikát-klíč pro šifrování XML assertions mezi entitami federace (SP a IdP). Vytvoříme si tedy self-sign certifikát. Při provozu SimpleSAMLphp je potřeba mít vygenerovaný pár certifikát-klíč pro šifrování XML assertions mezi entitami federace (SP a IdP). Vytvoříme si tedy self-sign certifikát.
  
-**Poznámka:​** Narozdíl od certifikátu pro HTTP server, zde self-sign certifikát nejen bohatě stačí, ale je i doporučen. Nepoužívejte v metadatech certifikát od důvěryhodné certifikační autority. Takový certifikát má platnost maximálně ​roky a poté je třeba ho vyměnit a aktualizovat tedy metadata SP ve federaci. Vygenerujete-li si self-sign certifikát (**2048bitový klíč!**) s platností 10 nebo klidně 20 let, nemusíte po letech metadata aktualizovat a ušetříte si práci.+**Poznámka:​** Narozdíl od certifikátu pro HTTP server, zde self-sign certifikát nejen bohatě stačí, ale je i doporučen. Nepoužívejte v metadatech certifikát od důvěryhodné certifikační autority. Takový certifikát má platnost maximálně ​roky a poté je třeba ho vyměnit a aktualizovat tedy metadata SP ve federaci. Vygenerujete-li si self-sign certifikát (**2048bitový klíč!**) s platností 10 nebo klidně 20 let, nemusíte po letech metadata aktualizovat a ušetříte si práci.
  
 <code bash> <code bash>
Line 155: Line 149:
 Aby mohla být služba zařazena do federace, je potřeba, aby byla správně popsána pomocí metadat (mj. musíme právě vygenerovaný pár certifikát-klíč nakonfigurovat v SimpleSAMLphp,​ aby se používal). **Pokud metadata služby nebudou splňovat požadavky, nebudou přijata do federace, proto budeme věnovat následující konfiguraci pozornost.** Aby mohla být služba zařazena do federace, je potřeba, aby byla správně popsána pomocí metadat (mj. musíme právě vygenerovaný pár certifikát-klíč nakonfigurovat v SimpleSAMLphp,​ aby se používal). **Pokud metadata služby nebudou splňovat požadavky, nebudou přijata do federace, proto budeme věnovat následující konfiguraci pozornost.**
  
-Hodnotu ​''​entityID'' ​si můžeme částečně vymyslet. Doporučenou hodnotu zkontruujeme následovně: ​''​<​nowiki>​https://​hostname/sp</​nowiki>​'' ​(část za názvem serveru -- ''​/sp''​ -- si můžeme téměř libovolně vymyslet, avšak nikdy bychom ​ji už následně neměli měnit), tedy ''<​nowiki>​https://​super-service.cesnet.cz/​sp</​nowiki>''​ pro fiktivní server ''​super-service.cesnet.cz''​.+Hodnotu ​//entityID// si můžeme částečně vymyslet. Doporučenou hodnotu zkontruujeme následovně: ​//<​nowiki>​https://​service.example.org/simplesamlphp</​nowiki>​// (//​entityID// ​si můžeme téměř libovolně vymyslet, avšak nikdy bychom ​ho už následně neměli měnit).
  
-Hodnota ​''​discoURL'' ​udává URL adresu tzv. "​discovery service"​ anebo WAYF (Where Are You From). Je zde uvedena URL adresa pro WAYF federace [[https://​www.eduid.cz/​cs/​tech/​summary|eduID.cz]].+Hodnota ​//discoURL// udává URL adresu tzv. "​discovery service"​ anebo WAYF (Where Are You From). Je zde uvedena URL adresa pro WAYF federace [[https://​www.eduid.cz/​cs/​tech/​summary|eduID.cz]].
  
-Hodnoty ​''​DisplayName''​''​Description''​''​InformationURL'' ​spadající pod ''​UIInfo'' ​a dále ''​OrganizationName''​''​OrganizationDisplayName'' ​''​OrganizationURL'' ​je nutno uvést v českém a anglickém jazyce. Jejich význam je zřetelný z jejich názvu. Uvádějí o službě doplňující avšak důležité informace potřebné např. různými rozcestníky na služby apod.+Hodnoty ​//DisplayName////Description////InformationURL// spadající pod //UIInfo// a dále //OrganizationName////OrganizationDisplayName// //OrganizationURL// je nutno uvést v českém a anglickém jazyce. Jejich význam je zřetelný z jejich názvu. Uvádějí o službě doplňující avšak důležité informace potřebné např. různými rozcestníky na služby apod.
  
 <code php> <code php>
 # Úpravy v konfiguračním souboru config/​authsources.php # Úpravy v konfiguračním souboru config/​authsources.php
-$config = array(+$config = [
  
-  '​default-sp'​ => array( +  '​default-sp'​ => [ 
-    '​entityID'​ => '​https://​super-service.cesnet.cz/sp',+    '​entityID'​ => '​https://​service.example.org/simplesamlphp',
     '​discoURL'​ => '​https://​ds.eduid.cz/​wayf.php',​     '​discoURL'​ => '​https://​ds.eduid.cz/​wayf.php',​
  
Line 174: Line 168:
    
     // UUInfo     // UUInfo
-    '​UIInfo'​ => array(+    '​UIInfo'​ => [
  
       // DisplayName       // DisplayName
-      '​DisplayName'​ => array( +      '​DisplayName'​ => [ 
-        '​cs'​ => 'Super Service',​ +        '​cs'​ => 'Example ​Service',​ 
-        '​en'​ => 'Super Service',​ +        '​en'​ => 'Example ​Service',​ 
-      ​),+      ​],
    
       // Description       // Description
-      '​Description'​ => array( +      '​Description'​ => [ 
-        '​cs'​ => 'Nástroj, který za vás vyřeší spoustu práce.', +        '​cs'​ => 'Lorem ipsum dolor sit amet.', 
-        '​en'​ => 'A tool helping you get your work done.', +        '​en'​ => 'Suspendisse imperdiet nulla in nisi efficitur.', 
-      ​),+      ​],
    
       // InformationURL       // InformationURL
-      '​InformationURL'​ => array( +      '​InformationURL'​ => [ 
-        '​cs'​ => '​https://​super-service.cesnet.cz/?language=cs', +        '​cs'​ => '​https://​service.example.org/​cs',​ 
-        '​en'​ => '​https://​super-service.cesnet.cz/?language=en', +        '​en'​ => '​https://​service.example.org/​en',​ 
-      ​),+      ​],
  
-    ​),+    ​],
    
     // OrganizationName     // OrganizationName
-    '​OrganizationName'​ => array( +    '​OrganizationName'​ => [ 
-      '​cs'​ => 'CESNET, z. s. p. o.', +      '​cs'​ => 'EXAMPLE, z. s. p. o.', 
-      '​en'​ => 'CESNET, a. l. e', +      '​en'​ => 'EXAMPLE, a. l. e', 
-    ​),+    ​],
  
     // OrganizationDisplayName     // OrganizationDisplayName
-    '​OrganizationDisplayName'​ => array( +    '​OrganizationDisplayName'​ => [ 
-      '​cs'​ => 'CESNET', +      '​cs'​ => 'EXAMPLE', 
-      '​en'​ => 'CESNET', +      '​en'​ => 'EXAMPLE', 
-    ​),+    ​],
  
     // OrganizationURL     // OrganizationURL
-    '​OrganizationURL'​ => array( +    '​OrganizationURL'​ => [ 
-      '​cs'​ => 'http://www.cesnet.cz/?lang=cs', +      '​cs'​ => 'https://www.example.org/​cs',​ 
-      '​en'​ => 'http://www.cesnet.cz/?lang=en', +      '​en'​ => 'https://www.example.org/​en',​ 
-    ​),+    ​],
  
-  ​),+  ​],
   ​   ​
-);+];
 </​code>​ </​code>​
  
-Metadata se ve federacích zpravidla mění podle toho, jak se přidávají anebo upravují poskytovatelé identit (IdP) nebo poskytovatelé služeb (SP). Platnost metadat je navíc časově omezena. Proto je vhodné metadata aktualizovat pravidelně. Toho lze nejjednodušeji dosáhnout jejich automatickou aktualizací za pomoci modulů ​''​metarefresh'' ​''​cron''​.+Metadata se ve federacích zpravidla mění podle toho, jak se přidávají anebo upravují poskytovatelé identit (IdP) nebo poskytovatelé služeb (SP). Platnost metadat je navíc časově omezena. Proto je vhodné metadata aktualizovat pravidelně. Toho lze nejjednodušeji dosáhnout jejich automatickou aktualizací za pomoci modulů ​//metarefresh// //cron//.
  
-Modul ''​metarefresh'' ​aktivujeme vytvořením souboru ​''​enable'' ​v jeho adresáři. Následně zkopírujeme výchozí konfigurační soubor modulu do adresáře s konfiguračními soubory ​''​/​opt/​simplesamlphp/​config''​.+Modul //metarefresh// aktivujeme vytvořením souboru ​//enable// v jeho adresáři. Následně zkopírujeme výchozí konfigurační soubor modulu do adresáře s konfiguračními soubory ​///​opt/​simplesamlphp/​config//.
  
 <code bash> <code bash>
Line 230: Line 224:
 </​code>​ </​code>​
  
-Nyní nastavíme zdroje metadat ([[https://​www.eduid.cz/​cs/​tech/summary|federace ​eduID.cz]], [[https://​www.hostel.eduid.cz|Hostel IdP]] a Social IdPs [Facebook, GitHub, Google, LinkedIn a ORCID].+Nyní nastavíme zdroje metadat ([[cs:tech:summary|eduID.cz]],​ [[https://​www.hostel.eduid.cz|Hostel IdP]] a [[cs:​tech:​socialidps]] ​[Facebook, GitHub, Google, LinkedIn a ORCID].
  
-Hodnota ​''​validateFingerprint'' ​obsahuje otisk veřejného klíče, který patří [[https://​www.eduid.cz/​docs/​eduid/​metadata/​metadata.eduid.cz.crt.pem|certifikátu]],​ jímž jsou metadata podepisována. Přestože se metadata stahují pomocí protokolu HTTPS, **důrazně doporučujeme stažená metadata kontrolovat**! Otisk si pro jistotu ověříme.+Hodnota ​//validateFingerprint// obsahuje otisk veřejného klíče, který patří [[https://​www.eduid.cz/​docs/​eduid/​metadata/​metadata.eduid.cz.crt.pem|certifikátu]],​ jímž jsou metadata podepisována. Přestože se metadata stahují pomocí protokolu HTTPS, **důrazně doporučujeme stažená metadata kontrolovat**! Otisk si pro jistotu ověříme.
  
 <code bash> <code bash>
 # Ověření otisku veřejného klíče # Ověření otisku veřejného klíče
-wget https://​www.eduid.cz/​docs/​eduid/​metadata/​metadata.eduid.cz.crt.pem +wget -q -O- \ 
-openssl x509 -fingerprint ​-in metadata.eduid.cz.crt.pem+     https://​www.eduid.cz/​docs/​eduid/​metadata/​metadata.eduid.cz.crt.pem ​| \ 
 +     ​openssl x509 -fingerprint
 </​code>​ </​code>​
  
Line 267: Line 262:
 <code php> <code php>
 # Úpravy v konfiguračním souboru config/​config-metarefresh.php # Úpravy v konfiguračním souboru config/​config-metarefresh.php
-$config = array(+$config = [
  
-  '​sets'​ => array(+  '​sets'​ => [
  
     # eduID.cz     # eduID.cz
-    '​eduidcz' ​  ​=> array( +    '​eduidcz'​ => [ 
-      '​cron' ​   => array('​hourly'​)+      '​cron'​ => ['​hourly'​]
-      '​sources'​ => array( +      '​sources'​ => [ 
-        ​array( +        ​[ 
-          '​src' ​                ​=> '​https://​metadata.eduid.cz/​entities/​eduid+idp',​+          '​src'​ => '​https://​metadata.eduid.cz/​entities/​eduid+idp',​
           '​validateFingerprint'​ => '​2E:​51:​FC:​08:​CF:​15:​C5:​15:​48:​28:​AF:​64:​A7:​97:​50:​80:​B4:​AB:​5D:​24',​           '​validateFingerprint'​ => '​2E:​51:​FC:​08:​CF:​15:​C5:​15:​48:​28:​AF:​64:​A7:​97:​50:​80:​B4:​AB:​5D:​24',​
-        ​)+        ​]
-      ​)+      ​]
-      '​expireAfter' ​  ​=> 60*60*24*4, // Maximum 4 days cache time. +      '​expireAfter'​ => 60*60*24*4, // Maximum 4 days cache time. 
-      '​outputDir' ​    ​=> '​metadata/​eduid/',​ +      '​outputDir'​ => '​metadata/​eduid/',​ 
-      '​outputFormat' ​ => '​flatfile',​+      '​outputFormat'​ => '​flatfile',​
     ),     ),
  
     # Hostel IdP     # Hostel IdP
-    '​hostel' ​   => array( +    '​hostel'​ => [ 
-      '​cron' ​   => array('​hourly'​)+      '​cron'​ => ['​hourly'​]
-      '​sources'​ => array( +      '​sources'​ => [ 
-        ​array( +        ​[ 
-          '​src' ​                ​=> '​https://​metadata.eduid.cz/​entities/​hostel',​+          '​src'​ => '​https://​metadata.eduid.cz/​entities/​hostel',​
           '​validateFingerprint'​ => '​2E:​51:​FC:​08:​CF:​15:​C5:​15:​48:​28:​AF:​64:​A7:​97:​50:​80:​B4:​AB:​5D:​24',​           '​validateFingerprint'​ => '​2E:​51:​FC:​08:​CF:​15:​C5:​15:​48:​28:​AF:​64:​A7:​97:​50:​80:​B4:​AB:​5D:​24',​
-        ​)+        ​]
-      ​)+      ​]
-      '​expireAfter' ​  ​=> 60*60*24*4, // Maximum 4 days cache time. +      '​expireAfter'​ => 60*60*24*4, // Maximum 4 days cache time. 
-      '​outputDir' ​    ​=> '​metadata/​hostel/',​ +      '​outputDir'​ => '​metadata/​hostel/',​ 
-      '​outputFormat' ​ => '​flatfile',​ +      '​outputFormat'​ => '​flatfile',​ 
-    ​),+    ​],
  
-    # Social ​IdP (Facebook, GitHub, Google, LinkedIn, mojeID ​a ORCID) +    # Social ​IdPs (Facebook, GitHub, Google, LinkedIn a ORCID) 
-    'socialidp' => array( +    'socialidps' => [ 
-      '​cron' ​   => array('​hourly'​)+      '​cron'​ => ['​hourly'​]
-      '​sources'​ => array( +      '​sources'​ => [ 
-        ​array( +        ​[ 
-          '​src' ​                ​=> '​https://​metadata.eduid.cz/​entities/​extidp.cesnet.cz',+          '​src'​ => '​https://​metadata.eduid.cz/​entities/​socialidps',
           '​validateFingerprint'​ => '​2E:​51:​FC:​08:​CF:​15:​C5:​15:​48:​28:​AF:​64:​A7:​97:​50:​80:​B4:​AB:​5D:​24',​           '​validateFingerprint'​ => '​2E:​51:​FC:​08:​CF:​15:​C5:​15:​48:​28:​AF:​64:​A7:​97:​50:​80:​B4:​AB:​5D:​24',​
-        ​)+        ​]
-      ​)+      ​]
-      '​expireAfter' ​  ​=> 60*60*24*4, // Maximum 4 days cache time. +      '​expireAfter'​ => 60*60*24*4, // Maximum 4 days cache time. 
-      '​outputDir' ​    ​=> '​metadata/​socialidp/', +      '​outputDir'​ => '​metadata/​socialidps/', 
-      '​outputFormat' ​ => '​flatfile',​ +      '​outputFormat'​ => '​flatfile',​ 
-    ​),+    ​],
  
-  ​)+  ​]
-);+];
 </​code>​ </​code>​
  
-Aby se metadata stahovala automaticky každou hodinu, musíme ještě zapnout a nakonfigurovat modul ''​cron''​. Aktivace modulu se provede prostým vytvořením souboru ​''​enable'' ​v jeho adresáři. Poté ještě zkopírujeme jeho výchozí konfigurační soubor do adresáře s ostatními konfiguračními soubory ​''​/​opt/​simplesamlphp/​config''​.+Aby se metadata stahovala automaticky každou hodinu, musíme ještě zapnout a nakonfigurovat modul //cron//. Aktivace modulu se provede prostým vytvořením souboru ​//enable// v jeho adresáři. Poté ještě zkopírujeme jeho výchozí konfigurační soubor do adresáře s ostatními konfiguračními soubory ​///​opt/​simplesamlphp/​config//.
  
 <code bash> <code bash>
Line 333: Line 328:
 </​code>​ </​code>​
  
-V konfiguračním souboru pro modul ''​cron'' ​stačí nastavit heslo do parametru ​''​key''​.+V konfiguračním souboru pro modul //cron// stačí nastavit heslo do parametru ​//key//.
  
 <code php> <code php>
 # Úpravy v konfiguračním souboru config/​module_cron.php # Úpravy v konfiguračním souboru config/​module_cron.php
-$config = array ( +$config = [ 
-  '​key' ​          ​=> '​eobaqcjf',​ +  '​key'​ => '​eobaqcjf',​ 
-  '​allowed_tags' ​ => array('​daily',​ '​hourly',​ '​frequent'​),​ +  '​allowed_tags'​ => array('​daily',​ '​hourly',​ '​frequent'​),​ 
-  '​debug_message'​ => TRUE+  '​debug_message'​ => true
-  '​sendemail' ​    ​=> TRUE+  '​sendemail'​ => true
-);+];
 </​code>​ </​code>​
  
-Posledním krokem konfigurace je přidání úlohy do systémového démona ​''​cron''​. Zadáme tedy příkaz ​''​crontab -e'' ​a vložíme do něj následující řádku (případně řádky, přidáme-li i komentář),​ který zajistí, že se každou první minutu v hodině spustí aktualizace metadat. **Nezapomeňte uvést heslo do parametru "​key"​.**+Posledním krokem konfigurace je přidání úlohy do systémového démona ​//cron//. Zadáme tedy příkaz ​//crontab -e// a vložíme do něj následující řádku (případně řádky, přidáme-li i komentář),​ který zajistí, že se každou první minutu v hodině spustí aktualizace metadat. **Nezapomeňte uvést heslo do parametru "​key"​.**
  
 <code bash> <code bash>
 # SimpleSAMLphp metadata refresh # SimpleSAMLphp metadata refresh
-01 * * * *  wget --quiet "​https://​super-service.cesnet.cz/​simplesaml/​module.php/​cron/​cron.php?​key=eobaqcjf&​tag=hourly"​ &> /dev/null+01 * * * *  wget --quiet "​https://​server.example.org/​simplesaml/​module.php/​cron/​cron.php?​key=eobaqcjf&​tag=hourly"​ &> /dev/null
 </​code>​ </​code>​
  
-Namísto příkazu ​''​wget'' ​je také možno použít např. ​''​curl''​''​fetch'' ​apod.+Namísto příkazu ​//wget// je také možno použít např. ​//curl////fetch// apod.
  
 <code bash> <code bash>
 # SimpleSAMLphp metadata refresh # SimpleSAMLphp metadata refresh
-01 * * * *  curl --silent "​https://​super-service.cesnet.cz/​simplesaml/​module.php/​cron/​cron.php?​key=eobaqcjf&​tag=hourly"​ &> /dev/null+01 * * * *  curl --silent "​https://​server.example.org/​simplesaml/​module.php/​cron/​cron.php?​key=eobaqcjf&​tag=hourly"​ &> /dev/null
 </​code>​ </​code>​
  
-Nyní je již SimpleSAMLphp nakonfigurováno. Na adrese ​''​<​nowiki>​https://​hostname/​simplesaml</​nowiki>​'' ​se můžeme přihlásit administrátorským heslem (soubor ​''​config/​config.php''​) do webového rozhraní SimpleSAMLphp. V záložce ​''​Federation'' ​najdeme odkaz ''​[ Show metadata ]''​, pod nímž se schovávají metadata našeho SP, která můžeme použít pro registraci ve federaci. V této záložce zároveň najdeme všechna IdP, jejichž metadata máme stažena společně s dobou jejich platnosti. V nastavení výše (''​config/​config-metarefresh.php''​) jsme zvolili 4 dny, tedy 96 hodin. Máme-li nastavenu aktualizaci metadat na každou hodinu, pak bychom nikdy neměli vidět platnost menší než 95 hodin. Metadata můžeme aktualizovat také ručně pomocí tlačítka ​''​Metarefresh:​ fetch metadata'' ​dole na stránce.+Nyní je již SimpleSAMLphp nakonfigurováno. Na adrese ​//<​nowiki>​https://​HOSTNAME/​simplesaml</​nowiki>​// se můžeme přihlásit administrátorským heslem (soubor ​//config/​config.php//) do webového rozhraní SimpleSAMLphp. V záložce ​//Federation// najdeme odkaz //[ Show metadata ]//, pod nímž se schovávají metadata našeho SP, která můžeme použít pro registraci ve federaci. V této záložce zároveň najdeme všechna IdP, jejichž metadata máme stažena společně s dobou jejich platnosti. V nastavení výše (//config/​config-metarefresh.php//) jsme zvolili 4 dny, tedy 96 hodin. Máme-li nastavenu aktualizaci metadat na každou hodinu, pak bychom nikdy neměli vidět platnost menší než 95 hodin. Metadata můžeme aktualizovat také ručně pomocí tlačítka ​//Metarefresh:​ fetch metadata// dole na stránce.
  
Last modified:: 2019/12/16 09:39