Federacja:SimpleSAMLphp SP: Różnice pomiędzy wersjami

Z PIONIER.Id
Przejdź do nawigacji Przejdź do wyszukiwania
federacja>Mgw
Nie podano opisu zmian
 
Nie podano opisu zmian
 
(Nie pokazano 1 wersji utworzonej przez jednego użytkownika)
Linia 6: Linia 6:
Aplikacja ma być dostępna pod adresem https://sp.example.pl/mysp
Aplikacja ma być dostępna pod adresem https://sp.example.pl/mysp


{{#lst:Federacja:SimpleSAMLphp|ssprequire}}
 


==='''Instalacja'''===
==='''Instalacja'''===
{{#lst:Federacja:SimpleSAMLphp|sspinstall1}} 
 
* załóżmy, że nazwa naszego serwera to '''sp.example.pl''', serwer o tej nazwie należy skonfigurować jako wirtualny serwer https (port 443), zaleca się również realizację przekierowania adresu http://sp.example.pl na http://sp.example.pl, np:
* załóżmy, że nazwa naszego serwera to '''sp.example.pl''', serwer o tej nazwie należy skonfigurować jako wirtualny serwer https (port 443), zaleca się również realizację przekierowania adresu http://sp.example.pl na http://sp.example.pl, np:


Linia 23: Linia 23:
   
   
  Alias /mysp /usr/local/simplesamlphp-1.13.2/www
  Alias /mysp /usr/local/simplesamlphp-1.13.2/www
{{#lst:Federacja:SimpleSAMLphp|sspinstall2}}
 
==='''Konfiguracja SimpleSAMLphp SP'''===
==='''Konfiguracja SimpleSAMLphp SP'''===
Opis instalacji jest dostępny na stronie [https://simplesamlphp.org/docs/stable/simplesamlphp-sp Konfiguracja SimpleSAMLphpSP]
Opis instalacji jest dostępny na stronie [https://simplesamlphp.org/docs/stable/simplesamlphp-sp Konfiguracja SimpleSAMLphpSP]
{{#lst:Federacja:SimpleSAMLphp|sspconfig1}}
 
{{#lst:Federacja:SimpleSAMLphp|cert}}
===='''Plik ''config/authsources.php'''''====
===='''Plik ''config/authsources.php'''''====
Dostosowujemy wpis 'default-sp':
Dostosowujemy wpis 'default-sp':
Linia 42: Linia 41:
     ),
     ),
  ),
  ),
{{#lst:Federacja:SimpleSAMLphp|metarefresh}}


===='''Ładowanie metadanych dostawców tożsamości, z którymi ma współpracować SP'''====
===='''Ładowanie metadanych dostawców tożsamości, z którymi ma współpracować SP'''====
Linia 54: Linia 52:
SP umożliwia logowanie federacyjne.  Jeśli ma być oferowane logowanie wyłącznie poprzez IdP w federacji PIONIER.Id, to ładujemy metadane  PIONIER.Id, dostępne pod adresem https://aai.pionier.net.pl/pionierid.xml.
SP umożliwia logowanie federacyjne.  Jeśli ma być oferowane logowanie wyłącznie poprzez IdP w federacji PIONIER.Id, to ładujemy metadane  PIONIER.Id, dostępne pod adresem https://aai.pionier.net.pl/pionierid.xml.
SP musi regularnie odświeżać te dane.   
SP musi regularnie odświeżać te dane.   
{{#lst:Federacja:SimpleSAMLphp|metadatapionierid}}


====='''Metadane PIONIER.Id-eduGAIN'''=====
====='''Metadane PIONIER.Id-eduGAIN'''=====
Linia 114: Linia 111:


==='''Discovery Service (DS) - usługa poszukiwania dostawcy tożsamości'''===
==='''Discovery Service (DS) - usługa poszukiwania dostawcy tożsamości'''===
<section begin='wayf'/>
 
''Discovery Service (DS)'', czy ''Where Are You From(WAYF)'' to usługi oferujące  wsparcie SP na etapie poszukiwania dostawcy tożsamości.
''Discovery Service (DS)'', czy ''Where Are You From(WAYF)'' to usługi oferujące  wsparcie SP na etapie poszukiwania dostawcy tożsamości.
<section end='wayf'/>
 
SimpleSAMLphp ma wewnętrzną funkcjonalność prezentowania listy dostępnych dostawców tożsamości.  
SimpleSAMLphp ma wewnętrzną funkcjonalność prezentowania listy dostępnych dostawców tożsamości.  
Lista obejmuje wszystkich dostawców tożsamości umieszczonych w plikach wskazanych jako źródła metadanych - parametr ''metadata.sources'' w pliku ''config/config.php''.
Lista obejmuje wszystkich dostawców tożsamości umieszczonych w plikach wskazanych jako źródła metadanych - parametr ''metadata.sources'' w pliku ''config/config.php''.

Aktualna wersja na dzień 15:26, 23 lut 2023


Instalacja SimpleSAMLphp SP

Aplikacja - Service Provider jest przygotowana w PHP. Celem jest włączenie logowania federacyjnego, czyli logowania poprzez wskazanego dostawcę tożsamości. Aplikacja ma być dostępna pod adresem https://sp.example.pl/mysp


Instalacja

  • załóżmy, że nazwa naszego serwera to sp.example.pl, serwer o tej nazwie należy skonfigurować jako wirtualny serwer https (port 443), zaleca się również realizację przekierowania adresu http://sp.example.pl na http://sp.example.pl, np:
<VirtualHost *:80>
 ServerName sp.example.pl
 DocumentRoot /var/www/html
 RedirectMatch 301 ^/mysp(.*) https://sp.example.pl/mysp$1
 </VirtualHost>
  • w konfiguracji serwera SSL podajemy klucz prywatny serwera (SSLCertificateKeyFile) oraz certyfikat serwera (SSLCertificateFile) i plik zawierający łańcuch certyfikatów wystawców (SSLCACertificateFile) - należy użyć znanego wystawcy certyfikatów, wymogi spełniają certyfikaty TCS, również tzw. wildcard (czyli wystawione dla nazwy *.example.pl)
  • dodajemy w sekcji wirtualnego hosta SSL
Alias /mysp /usr/local/simplesamlphp-1.13.2/www

Konfiguracja SimpleSAMLphp SP

Opis instalacji jest dostępny na stronie Konfiguracja SimpleSAMLphpSP

Plik config/authsources.php

Dostosowujemy wpis 'default-sp':

  • odkomentowujemy 'signature.algorithm', aby realizowany był podpis SHA-256
  • dodajemy wskazania do pliku klucza prywatnego i certyfikatu
  • dodajemy filtr konwerujący atrybuty z postaci OID do nazwy
'default-sp' => array(
   'saml:SP',
   'signature.algorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
   'privatekey' => 'example.pl.key',
   'certificate' => 'example.pl.pem',
   'authproc' => array(
       80 => array('class' => 'core:AttributeMap', 'oid2name'),
    ),
),

Ładowanie metadanych dostawców tożsamości, z którymi ma współpracować SP

Korzystamy ze skonfigurowanego wcześniej modułu metarefresh. Jeśli chcemy pobrać metadane IdP, np. IdP testowego, by umożliwić sprawdzenie czy testowa aplikacja współpracuje z tym dostawcą, wykonujemy polecenie:

./modules/metarefresh/bin/metarefresh.php -o=tmp-testidp adres_metadanych(URL)

W katalogu ./tmp-testidp pojawią się pliki saml20-idp-remote.php i shib13-idp-remote.php. Zawartość pliku saml20-idp-remote.php kopiujemy do ./metadata/saml20-idp-remote.php

Metadane PIONIER.Id

SP umożliwia logowanie federacyjne. Jeśli ma być oferowane logowanie wyłącznie poprzez IdP w federacji PIONIER.Id, to ładujemy metadane PIONIER.Id, dostępne pod adresem https://aai.pionier.net.pl/pionierid.xml. SP musi regularnie odświeżać te dane.

Metadane PIONIER.Id-eduGAIN

Jeśli dostawca usługi ma akceptować logowania członków eduGAIN, konieczne będzie regularne pobieranie metadanych eduGAIN przygotowanych przez federację PIONIER.Id, dostępnych pod adresem https://aai.pionier.net.pl/pionierid-edugain-idp-feed.xml. Aby regularnie pobierać metadane, wykonujemy następujące kroki:

  • Dodajemy w pliku config/config-metarefresh.php wpis:
'edugain-sp' => array(
      'cron'          => array('hourly'),
      'sources'       => array(
          array(
                'src' => 'https://aai.pionier.net.pl/pionierid-edugain-idp-feed.xml',
                'validateFingerprint' => 'D6:84:09:2D:F7:95:B4:96:8A:F7:61:3A:F5:3E:EC:C6:4B:DF:73:5B',
          ),
       ),
      'expireAfter' => 60*60*24*4, // Maximum 4 days cache time.
      'outputDir' => 'metadata/edugain-sp/',
      'outputFormat' => 'flatfile',
 ),
  • Tworzymy katalog metadata/edugain-idp/ z prawami zapisu dla użytkownika, pod którym pracuje httpd
  • Dodajemy do crontaba wpis wg tego co podaje strona

https://sp.example.pl/mysp/module.php/cron/croninfo.php (dostępna po zalogowaniu jako administrator), np.

10 * * * * curl --silent "https://sp.example.pl/mysp/module.php/cron/cron.php?key=0oki8uh&tag=daily"> /dev/null 2>&1

Można również z tej strony uruchomić zadanie natychmiast przez kliknięcie "Run [hourly]"

  • Zaplanowane zadanie odświeżania metadanych będzie realizowane w wyznaczonych godzinach.

W pliku config/config.php we wpisie 'metadata.sources' należy dodać:

array('type' => 'flatfile', 'directory' => 'metadata/edugain-idp'),

Metadane te zawierają również dostawców tożsamości z PIONIER.Id, a więc po włączeniu ich pobierania należy wyłaczyć metadane PIONIER.Id, tj. anulować zadanie w crontab i usunąć wskazanie katalogu metadata/pionierid w parametrze metadata.sources w pliku config/config.php.


Federacyjne logowanie w aplikacji

<?php
  require_once('/usr/local/sp/lib/_autoload.php');
 
  $as = new SimpleSAML_Auth_Simple('default-sp');
  $as->requireAuth();
  $attributes = $as->getAttributes();
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<html>
<head><title>Usługa federacyjna w PHP</title></head>
<body>
<h1>Moja pierwsza usługa korzystająca z PHP</h1>
<p>Witajcie!</p> 
<h2>Poniżej Twoje atrybuty:</h2>
<ul>
<?php 
foreach ($attributes as $type=>$value) {
print '<li>'; print "$type => ".join(', ',$value);
}
?>
</body></html>

Discovery Service (DS) - usługa poszukiwania dostawcy tożsamości

Discovery Service (DS), czy Where Are You From(WAYF) to usługi oferujące wsparcie SP na etapie poszukiwania dostawcy tożsamości.

SimpleSAMLphp ma wewnętrzną funkcjonalność prezentowania listy dostępnych dostawców tożsamości. Lista obejmuje wszystkich dostawców tożsamości umieszczonych w plikach wskazanych jako źródła metadanych - parametr metadata.sources w pliku config/config.php. Domyślne ustawienie to:

'idpdisco.layout' => 'dropdown',

oznaczające, że prezentowana będzie rozwijalna lista dostawców tożsamości. Alternatywna wartość parametru to links, powoduje ona, że prezentowana jest pełna lista linków do dostawców.

Ustawiając parametr idpdisco.extDiscoveryStorage można wymusić użycie zewnętrznej usługi DS/WAYF"

'idpdisco.extDiscoveryStorage' => 'https://aai.pionier.net.pl/WAYF',

Innym podejściem jest zastosowanie usługi DiscoJuice DiscoJuice.