Federacja:SimpleSAMLphp SP: Różnice pomiędzy wersjami
federacja>Mgw Nie podano opisu zmian |
m (1 wersja) |
(Brak różnic)
|
Wersja z 14:47, 3 sty 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
{{#lst:Federacja:SimpleSAMLphp|ssprequire}}
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:
<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
{{#lst:Federacja:SimpleSAMLphp|sspinstall2}}
Konfiguracja SimpleSAMLphp SP
Opis instalacji jest dostępny na stronie Konfiguracja SimpleSAMLphpSP {{#lst:Federacja:SimpleSAMLphp|sspconfig1}} {{#lst:Federacja:SimpleSAMLphp|cert}}
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'), ), ),
{{#lst:Federacja:SimpleSAMLphp|metarefresh}}
Ł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. {{#lst:Federacja:SimpleSAMLphp|metadatapionierid}}
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
<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. <section end='wayf'/> 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.