Kod źródłowy Wiki Katalog - Externí přihlašovací formulář
Ostatnio modyfikowane 2025/11/07 13:41 przez Jan Slezák
Pokaż ostatnich autorów
| author | version | line-number | content |
|---|---|---|---|
| 1 | |((( | ||
| 2 | Funkcja zewnętrznego formularza zostanie usunięta w jednej z przyszłych wersji Tritia. Jeśli z niej korzystasz, rozważ jej usunięcie podczas kolejnej aktualizacji swojej strony internetowej. | ||
| 3 | |||
| 4 | Istnieje kilka powodów, dla których zdecydowaliśmy się nie wspierać tej funkcji w dłuższej perspektywie. Po pierwsze, ten sposób logowania nie jest już nowoczesny i jest zastępowany różnymi przyciskami logowania (Facebook, Google, Twitter, mojeID itp.), a po drugie stanowi zagrożenie dla bezpieczeństwa. | ||
| 5 | |||
| 6 | Należy pamiętać, że przyciski logowania przekierowują (lub wyświetlają okno) na stronę dostawcy logowania (np. mojeID), a po zalogowaniu przekierowują z powrotem. Nikt nie oferuje możliwości umieszczenia formularza logowania bezpośrednio na stronie, a nawet Tritius do logowania za pomocą mojeID wyświetla przycisk logowania. | ||
| 7 | |||
| 8 | Formularz logowania zazwyczaj wymaga przesyłania danych między dwiema domenami (strona biblioteki → tritius), co może być podatne na tzw. ataki CSRF. Nasz formularz logowania zawierał pewną ochronę przed tego typu atakami, ale wraz z pojawieniem się wersji Chrome 76 ochrona ta uniemożliwiła działanie formularza, ponieważ Chrome wymaga teraz jeszcze wyższego poziomu bezpieczeństwa i innego mechanizmu. Spodziewamy się, że w przyszłości wymagania w tym zakresie będą się nadal zaostrzać. | ||
| 9 | |||
| 10 | Uważamy, że lepiej będzie zainwestować naszą i Państwa energię w inne funkcje, które są bardziej przydatne dla naszych czytelników. | ||
| 11 | ))) | ||
| 12 | |||
| 13 | = Kod źródłowy = | ||
| 14 | |||
| 15 | Tritius umożliwia umieszczenie formularza logowania na stronach zewnętrznych (np. stronach biblioteki): | ||
| 16 | |||
| 17 | |||
| 18 | |((( | ||
| 19 | |||
| 20 | |||
| 21 | | | ||
| 22 | |||
| 23 | {{{<!-- Základní kostra formuláře --> | ||
| 24 | <form id="tritius-login-form" data-tritius-url="https://tritius.knihovna.cz"> | ||
| 25 | </form> | ||
| 26 | |||
| 27 | <!-- Import obslužného JS kódu --> | ||
| 28 | <script type="text/javascript" src="https://tritius.knihovna.cz/js/tritius.js"></script> | ||
| 29 | |||
| 30 | <!-- Inicializace Tritius pluginu --> | ||
| 31 | <script type="text/javascript"> | ||
| 32 | (function(window) { | ||
| 33 | tritius.init(); | ||
| 34 | })(window); | ||
| 35 | </script>}}} | ||
| 36 | |||
| 37 | |||
| 38 | ))) | ||
| 39 | |||
| 40 | * ID formularza musi być „**tritius-login-form**”. | ||
| 41 | * Atrybut **data-tritius-url** zawiera adres URL, pod którym działa katalog Tritia. | ||
| 42 | * Wszystkie pola formularza są dodawane automatycznie (o ile nie zostały nadpisane, patrz poniżej). | ||
| 43 | * W Tritiu należy ustawić domenę, na której dozwolony jest zewnętrzny formularz logowania (pozycja ustawień: EXTERNAL_LOGIN_FORM_ALLOWED_ORIGIN). | ||
| 44 | |||
| 45 | Formularz zawiera kilka pól: | ||
| 46 | |||
| 47 | |=((( | ||
| 48 | Nazwa pola (name) | ||
| 49 | )))|=((( | ||
| 50 | Opis | ||
| 51 | )))|=(% colspan="1" %)Wartość | ||
| 52 | |wd|Definicja internetowa|(% colspan="1" %)((( | ||
| 53 | URL nazwa definicji strony internetowej, do której czytelnik będzie się logował. | ||
| 54 | |||
| 55 | Domyślnie puste | ||
| 56 | ))) | ||
| 57 | |_csrf|CSRF Token|(% colspan="1" %)Jest dostarczany wraz ze skryptem obsługi. | ||
| 58 | |(% colspan="1" %)username|(% colspan="1" %)Nazwa użytkownika|(% colspan="1" %)Wprowadza użytkownik. | ||
| 59 | |(% colspan="1" %)password|(% colspan="1" %)Hasło|(% colspan="1" %)Wprowadza użytkownik. | ||
| 60 | |(% colspan="1" %)submit|(% colspan="1" %)Przycisk wysyłania|(% colspan="1" %) | ||
| 61 | |||
| 62 | = Przepisywanie pól formularza = | ||
| 63 | |||
| 64 | Skrypt obsługowy przed dodaniem pola formularza zawsze sprawdza, czy pole o danej nazwie już nie istnieje. Jeśli tak, nie dodaje go i pozostawia zapisane w HTML. | ||
| 65 | |||
| 66 | |((( | ||
| 67 | <!~-~- Importowanie kodu obsługi JS ~-~-> | ||
| 68 | |||
| 69 | <script type="text/javascript" src="[[https:~~/~~/tritius.knihovna.cz/js/tritius.js">>url:https://tritius.knihovna.cz/js/tritius.js]]></script> | ||
| 70 | |||
| 71 | |||
| 72 | <!~-~- Podstawowa struktura formularza ~-~-> | ||
| 73 | |||
| 74 | <form id="tritius-login-form" data-tritius-url="[[https:~~/~~/tritius.knihovna.cz">>url:https://tritius.knihovna.cz/]]> | ||
| 75 | |||
| 76 | <input type="text" name="username" /> | ||
| 77 | |||
| 78 | </form> | ||
| 79 | ))) | ||
| 80 | |||
| 81 | = Opisy (tłumaczenia) = | ||
| 82 | |||
| 83 | Wtyczka umożliwia definiowanie opisów dla poszczególnych pól: | ||
| 84 | |||
| 85 | |||
| 86 | |||
| 87 | |((( | ||
| 88 | <!~-~- Podstawowa struktura formularza ~-~-> | ||
| 89 | |||
| 90 | <form id="tritius-login-form" data-tritius-url="[[https:~~/~~/tritius.knihovna.cz">>url:https://tritius.knihovna.cz/]]> | ||
| 91 | |||
| 92 | </form> | ||
| 93 | |||
| 94 | |||
| 95 | <!~-~- Importowanie kodu obsługi JS ~-~-> | ||
| 96 | |||
| 97 | <script type="text/javascript" src="[[https:~~/~~/tritius.knihovna.cz/js/tritius.js">>url:https://tritius.knihovna.cz/js/tritius.js]]></script> | ||
| 98 | |||
| 99 | |||
| 100 | <!~-~- Inicjalizacja wtyczki Tritius ~-~-> | ||
| 101 | |||
| 102 | <script type="text/javascript> | ||
| 103 | |||
| 104 | (function(window) { | ||
| 105 | |||
| 106 | tritius.messages.username = 'Nazwa użytkownika'; | ||
| 107 | |||
| 108 | tritius.messages.password = 'Hasło'; | ||
| 109 | |||
| 110 | tritius.messages.submit = 'Zaloguj się'; | ||
| 111 | |||
| 112 | |||
| 113 | tritius.init(); | ||
| 114 | |||
| 115 | })(window); | ||
| 116 | |||
| 117 | </script> | ||
| 118 | |||
| 119 | |||
| 120 | ))) | ||
| 121 | |||
| 122 | = Ustawienia w Tritiu = | ||
| 123 | |||
| 124 | Aby zabezpieczyć formularz metodą CORS przed atakami CSRF, w ustawieniach Tritia należy wypełnić pole EXTERNAL_LOGIN_FORM_ALLOWED_ORIGIN, w którym należy podać adresy URL, pod którymi znajduje się dozwolony formularz logowania. | ||
| 125 | |||
| 126 | Przykładowe ustawienia: | ||
| 127 | |||
| 128 | |=EXTERNAL_LOGIN_FORM_ALLOWED_ORIGIN|=Opis | ||
| 129 | |*|Zezwala na formularze w dowolnym miejscu. Nie zalecamy stosowania tego ustawienia w środowisku produkcyjnym, ponieważ jest ono niebezpieczne. | ||
| 130 | |(% colspan="1" %)[[https:~~/~~/domain1.com>>url:https://domain1.com/]]|(% colspan="1" %)Zezwoli na formularz na stronie https:~/~/domain1.com | ||
| 131 | |(% colspan="1" %)https:~/~/katalog.knihovna.cz;https:~/~/tritius.knihovna.cz|(% colspan="1" %)Zezwala na formularz na dwóch stronach z adresem URL [[https:~~/~~/katalog.knihovna.cz>>url:https://katalog.knihovna.cz]] a [[https:~~/~~/tritius.knihovna.cz.>>url:https://tritius.knihovna.cz.]] | ||
| 132 | |||
| 133 |