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

Z PIONIER.Id
Przejdź do nawigacji Przejdź do wyszukiwania
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.