Katalog - Zewnętrzny formularz rejestracyjny
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. 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. 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. 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ć. Uważamy, że lepiej będzie zainwestować naszą i Państwa energię w inne funkcje, które są bardziej przydatne dla naszych czytelników. |
Kod źródłowy
Tritius umożliwia umieszczenie formularza logowania na stronach zewnętrznych (np. stronach biblioteki):
<!-- Základní kostra formuláře -->
<form id="tritius-login-form" data-tritius-url="https://tritius.knihovna.cz">
</form>
<!-- Import obslužného JS kódu -->
<script type="text/javascript" src="https://tritius.knihovna.cz/js/tritius.js"></script>
<!-- Inicializace Tritius pluginu -->
<script type="text/javascript">
(function(window) {
tritius.init();
})(window);
</script>
|
- ID formularza musi być „tritius-login-form”.
- Atrybut data-tritius-url zawiera adres URL, pod którym działa katalog Tritia.
- Wszystkie pola formularza są dodawane automatycznie (o ile nie zostały nadpisane, patrz poniżej).
- W Tritiu należy ustawić domenę, na której dozwolony jest zewnętrzny formularz logowania (pozycja ustawień: EXTERNAL_LOGIN_FORM_ALLOWED_ORIGIN).
Formularz zawiera kilka pól:
Nazwa pola (name) | Opis | Wartość |
|---|---|---|
| wd | Definicja internetowa | URL nazwa definicji strony internetowej, do której czytelnik będzie się logował. Domyślnie puste |
| _csrf | CSRF Token | Jest dostarczany wraz ze skryptem obsługi. |
| username | Nazwa użytkownika | Wprowadza użytkownik. |
| password | Hasło | Wprowadza użytkownik. |
| submit | Przycisk wysyłania |
Przepisywanie pól formularza
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.
<!-- Importowanie kodu obsługi JS --> <script type="text/javascript" src="https://tritius.knihovna.cz/js/tritius.js"></script> <!-- Podstawowa struktura formularza --> <form id="tritius-login-form" data-tritius-url="https://tritius.knihovna.cz"> <input type="text" name="username" /> </form> |
Opisy (tłumaczenia)
Wtyczka umożliwia definiowanie opisów dla poszczególnych pól:
<!-- Podstawowa struktura formularza --> <form id="tritius-login-form" data-tritius-url="https://tritius.knihovna.cz"> </form> <!-- Importowanie kodu obsługi JS --> <script type="text/javascript" src="https://tritius.knihovna.cz/js/tritius.js"></script> <!-- Inicjalizacja wtyczki Tritius --> <script type="text/javascript> (function(window) { tritius.messages.username = 'Nazwa użytkownika'; tritius.messages.password = 'Hasło'; tritius.messages.submit = 'Zaloguj się'; tritius.init(); })(window); </script>
|
Ustawienia w Tritiu
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.
Przykładowe ustawienia:
| EXTERNAL_LOGIN_FORM_ALLOWED_ORIGIN | Opis |
|---|---|
| * | Zezwala na formularze w dowolnym miejscu. Nie zalecamy stosowania tego ustawienia w środowisku produkcyjnym, ponieważ jest ono niebezpieczne. |
| https://domain1.com | Zezwoli na formularz na stronie https://domain1.com |
| https://katalog.knihovna.cz;https://tritius.knihovna.cz | Zezwala na formularz na dwóch stronach z adresem URL https://katalog.knihovna.cz a https://tritius.knihovna.cz. |