Shibboleth IdP w wersji prekonfigurowanej maszyny wirtualnej
Wstęp
Maszyna wzorcowa zawierająca serwer IdP skonfigurowany na oprogramowaniu Shibboleth 4.1 została przygotowana dla środowiska VMware.
Instalacja została wykonana w działalności federacji PIONIER.id
Adres do kontaktu: kontakt@aai.pionier.net.pl
Pakiet stworzono przy pomocy otwartego oprogramowania.
Na serwerze utworzony jest użytkownik shibidp z hasłem 1qazxsw2123
Użytkownik shibidp ma uprawnienia do wykonania sudo.
Po probraniu i uruchomieniu maszyny należy wykonać kilka prostych czynności konfiguracyjnych.
Konfiguracja parametrów sieciowych
Rozpocznij od konfiguracji sieci uruchamiając skrypt /root/konfiguruj_siec.py Jeżeli wybierasz opcję konfiguracji adresu przez DHCP, to podawanie adresu DNS jest zbędne - zostanie pobrany z DHCP.
Jeżeli adres jest podawany, jako statyczny, to skrypt zmodyfikuje ustawienia iptables ograniczając dostęp ssh do lokalnej podsieci. W przypadku adresów podanych przez DHCP dostęp po ssh jest nieograniczony. Zmodyfikuj odpowiednio reguły iptables, żeby zapewnić optymalne bezpieczeństwo.
System pozostawia otwarte porty 80 i 443 z nieograniczonym dostępem, poza tym dostęp jest blokowany.
Po zakończeniu instalacji pozwól na restart systemu.
Konfiguracja IdP
Po restarcie uruchom skrypt /root/szykuj_idp.sh, a po jego zakończeniu:
- zmodyfikuj plik /opt/shibboleth-idp/conf/idp.properties: w wierszu idp.entityID zamień sso.test.pl na nazwę IdP podaną w trakcie instalacji jako SAML EntityID;
- zmodyfikuj plik /opt/shibboleth-idp/credentials/secrets.properties: odkomentuj wiersz idp.persistentId.salt i ustaw swój specyficzny salt (o długości co najmniej 16 znaków);
- zrestartuj jetty: systemctl restart jetty;
- sprawdź poprawność działania otwierając stronę https://adres_twojego_serwera/idp/shibboleth (Uwaga: jetty pracuje z certyfikatem serwerowym typu self-signed, więc przeglądarka prawdopodobnie będzie zgłaszała błąd. zabezpieczeń - do testów sugerujemy użycie Firefoxa).
Instalacja docelowego certyfikatu serwera Jetty
Pliki z kluczem prywatnym, certyfikatem serwera oraz certyfikatami pośrednimi (pozyskane w czasie generowania certyfikatu serwera np. poprzez usługę PIONIER TCS) należy umieścić w magazynie wskazanym w pliku /opt/jetty-apps/start.d/ssl.ini jako jetty.sslContext.keyStorePath oraz jetty.sslContext.trustStorePath. Jeśli np. certyfikat został wystawiony przez usługę TCS i dysponujemy trzema plikami:
- server.key
- server.pem
- chain.pem
wykonujemy:
cat server.pem chain.pem > jetty-chain.pem openssl pkcs12 -export -inkey server.key -in jetty-chain.pem -out jetty.p12
Plik p12 (lub jks) przegrywamy do katalogu wskazanego w pliku /opt/jetty-apps/start.d/ssl.ini w wierszach jetty.sslContext.keyStorePath oraz jetty.sslContext.trustStorePath (jest to ten sam plik, ponieważ w jednym pliku mamy zarówno certyfikat serwera jak i certyfikaty wystawców).
Baza użytkowników
Jako żródło danych działa lokalna baza LDAP, w niej jest testowy użytkownik o nazwie test1 z hasłem 1qazxsw2. Zawartość bazy LDAP można wyświetlić poleceniem:
ldapsearch -x -b 'dc=test,dc=pl' -D "cn=Manager,dc=test,dc=pl" -W '(objectclass=*)'
hasło: 1qazxsw2
Pobieranie metadanych
Maszyna jest skonfigurowana tak, by automatycznie pobierać metadane wszystkich usług eduGAIN. Pobrany plik metadanych jest weryfikowany przez sprawdzenie podpisu cyfrowego PIONIER.Id. Współpraca z usługami eduGAIN będzie możliwa dopiero po zarejestrowaniu IdP w PIONIER.id.
Dodatkowo do metadanych dodane jest testowe SP, dzięki czemu działanie IdP będzie można przetestować jeszcze przed rejestracją
Testowanie IdP
Po wystartowaniu maszyny w celu przetestowania można skorzystać z testowego SP pod adresem https://aai.pionier.net.pl/test/attributes.php. W tym celu należy przekazać adres metadanych IdP:
https://<adres_twojego_serwera>/idp/shibboleth
na adres: admin@aai.pionier.net.pl
Gdy zostanie potwierdzone, że metadane zostały dodane do testowej aplikacji, należy sprawdzić przebieg logowania:
- otworzyć stronę https://aai.pionier.net.pl/test/attributes.php
- zalogować się przy użyciu danych test1 z hasłem 1qazxsw2
Udostępnianie atrybutów
Maszyna jest skonfigurowana z zalecanymi politykami udostępniania atrybutów. Administrator serwera IdP musi zdawać sobie sprawę jakie dane są udostępniane, dlatego zalecamy przeanalizowanie konfiguracji zgodnie ze wskazówkami podanymi na https://wiki.aai.pionier.net.pl/index.php/Federacja:ShibbolethIdP4#attribute-filter.xml