Federacja:ShibbolethIdP5-docker: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 80: | Linia 80: | ||
# wykonanie restartu obrazu | # wykonanie restartu obrazu | ||
docker compose restart | docker compose restart | ||
===Przygotowanie certyfikatu na potrzeby serwera jetty=== |
Wersja z 21:34, 31 mar 2025
Opis
W tym podejściu przygotowywane są trzy środowiska dockerowe:
- baza mysql - zawiera bazę i tablice używane przez Shibboleth v. 5
- baza LDAP - zawiera prostą bazę danych użytkowników w celu zobrazowania procesu uwierzytelniania i dostarczania atrybutów w Shibboleth IdP; docelowo instalacja IdP może korzystać z dowolnej bazy danych użytkowników
- środowisko działania Shibboleth IdP: jetty jako serwer WWW i aplikacja Shibboleth IdP
Wymagania systemowe
- zainstalowany silnik dockerowy https://docs.docker.com/engine/install/
- zainstalowany docker compose https://docs.docker.com/compose/install/
Paczka instalacyjna i uruchomieniowa serwera IdP
Pobranie aktualnej paczki pionier-id-idp.tar.gz
Rozpakowanie paczki
np. w katalogu /opt
cd /opt tar xfv pionier-id-idp.tar.gz cd /opt/PIONIER.Id-IdP
Opis zawartości paczki
- w podkatalogu jetty/credentials/ jest umieszczony plik jetty.p12 zawierający testowy certyfikat serwera, wystawiony na nazwę aai.example.pl przez niezaufane CA; w tym katalogu należy umieścić plik jetty.p12 zawierający certyfikat przeznaczony dla instalowanego serwera (wskazówki umieszczono poniżej)
- trzy pliki docker-compose-init.yaml, docker-compose-upgrade.yaml, docker-compose.yaml służą uruchamianiu środowiska w trybie inicjalizacji (docker-compose-init.yaml), upgrate'u (docker-compose-upgrade.yaml) oraz gotowej usługi (docker-compose.yaml)
- w pliku docker-compose.yaml jest zdefiniowany start poszczególnych usług, definicja współdzielonych wolumnenów oraz definicja zmiennych środowiskowych (sekcja environment):
- usługa mariadb - start serwera mysql, tworzona jest baza shibboleth_pionier i potrzebne tablice
- usługa openldap - start serwera openLDAP - serwer dostępny jest na portach 1389 i 1636, korzysta ze schematów znajdujących się w podkatalogu ldap-schemas, inicjowana jest zawartość bazy zgodnie z plikiem w podkatalogu ldifs
- idp - start serwera jetty oraz aplikacji Shibboleth IdP
- wspólne wolumeny są zdefiniowane dla usług mariadb oraz openldap i gwarantują trwałość baz danych
- dla usługi idp w atrybucie environment są podawane ustawienia:
- - JETTY_IP_ADDR to adres IP serwera IdP
- - JETTY_HTTP to port nasłuchu http, domyślnie 8081
- - JETTY_HTTPS to port nasłuchu https, domyślnie 9444
- - JETTY_PASS to hasło dla pliku jetty/credentials/jetty.p12
Przygotowanie obrazów
Po dostosowaniu zawartości plików wykonujemy tworzymy obraz Shibboleth IdP:
cd /opt/PIONIER.Id-IdP docker compose build
Po poprawnym zakończeniu sprawdzamy za pomocą polecenia:
docker images
że istnieje obraz pionier-idp-5
Zainicjowanie instalacji Shibboleth IdP
Przeprowadzamy instalację inicjującą. Na głównej maszynie zostanie utworzony katalog /opt/shibboleth-idp-pionier, w którym będzie umieszczona instalowana wersja Shibboleth IdP (plik uruchomieniowy oraz cała konfiguracja). Instalacja odbywa się w trybie interakcyjnym, należy odowiedzieć na zadane pytania lub potwierdzić wybór przez Enter. Uruchamiamy:
docker compose -f ./docker-compose-init.yaml run idp-init
Interakcja wygląda następująco:
- Installation Directory
- [/opt/shibboleth-idp] ?
- Enter
- Host Name
- [973fd3996aaa] ?
- Podajemy pełną nazwę hosta, np. idp.uczelnia.pl
- SAML EntityID
- [ https://idp.uczelnia.pl/idp/shibboleth ] ?
- Enter
Attribute Scope: [uczelnia.pl] ?
- Enter
Następuje instalacja pluginów, na którą należy wyrazić zgodę odpowiadając dwukrotnie Y
Po zakończeniu instalacji w katalogu /opt/shibboleth-idp-pionier znajduje się instalacja i wstępna konfiguracja Shibboleth IdP. Proces dockera związany z inicjalizacją Shibboleth IdP zostaje zakończony, ale zaleca się wykonanie polecenia:
docker compose -f ./docker-compose-init.yaml down --remove-orphans
Uruchomienie Shibboleth IdP
Aby uruchomić usługę serwera IdP należy wykonać polecenie:
docker compose up -d
Przy pierwszym uruchomieniu zostanie pobrany obraz mariadb oraz openldap, zostaną utworzone wolumeny wspólne i następnie jest uruchamiany obraz pionierid-id, czyli startowany jest serwer webowy jetty i w ramach tego serwera jest udostępniana aplikacja Shibboleth IdP.
W pliku docker-compose.yaml odpowiedzialnym za przebieg uruchamiania usługi jest umieszczony wpis:
restart: always
co oznacza, że system dockerowy będzie samodzielnie startował usługę - nie są potrzebne żadne dodatkowe działania, by zapewnić startowanie po reboocie maszyny podstawowej.
Aktualizacja konfiguracji Shibboleth IdP
Po zainicjowaniu usługi Shiiboleth IdP w katalogu w katalogu /opt/shibboleth-idp-pionier serwera podstawowego znajdują się wszystkie pliki usługi IdP. Aktualizacja konfiguracji odbywa się poprzez modyfikację potrzebnych plików, np. /opt/shibboleth-idp-pionier/conf/idp.properties. Po dokonanych zmianach należy zrestartować obraz dockera:
docker compose restart
Zmiana certyfikatu serwera jetty
Zmiana certyfikatu polega na:
- przygotowaniu nowego pliku jetty.p12 zawierającego nowy certyfikat (wskazówki poniżej) i wgraniu go do katalogu jetty/credentials/
- modyfikacji zmiennej środowiskowej JETTY_PASS w pliku docker-compose.yaml, jeśli do utworzenia pliku p12 użyto innego hasła niż podane w tym pliku
- wykonanie restartu obrazu
docker compose restart