WebToDate/Neveřejná část/Reference: Porovnání verzí
| Řádek 231: | Řádek 231: | ||
=== Úvod === | === Úvod === | ||
Modul umožňuje i externí autentifikaci. To znamená, že v takovém případě se při ověřování přístupu nepoužívá modul Registrace a personalizace, ale externí server. Při zobrazení určité položky (zprávy, stránky apod.) se v tomto režimu nejprve vyhodnocuje, zda je položka přístupná anonymním uživatelům či nikoliv – v tomto se oba režimy nijak neliší. V případě, že je zjištěno, že položka není anonymně přístupná, použije se algoritmus externího ověřování. Algoritmus ověřování v případě interní autentifikace je graficky znázorněn v kapitole [[../Začínáme# | Modul umožňuje i externí autentifikaci. To znamená, že v takovém případě se při ověřování přístupu nepoužívá modul Registrace a personalizace, ale externí server. Při zobrazení určité položky (zprávy, stránky apod.) se v tomto režimu nejprve vyhodnocuje, zda je položka přístupná anonymním uživatelům či nikoliv – v tomto se oba režimy nijak neliší. V případě, že je zjištěno, že položka není anonymně přístupná, použije se algoritmus externího ověřování. Algoritmus ověřování v případě interní autentifikace je graficky znázorněn v kapitole [[../Začínáme#Základní principy|Základní principy]], algoritmus v případě externí autentifikace znázorňuje následující diagram. | ||
[[Image:neverejna_cast10-diagram-algoritmu-autentifikace.jpg|center]] | [[Image:neverejna_cast10-diagram-algoritmu-autentifikace.jpg|center]] | ||
Verze z 7. 8. 2009, 10:57
Veřejné skripty
Prezentační skripty
Využití skriptů veřejné části se liší podle toho, zda modul pracuje v režimu interní nebo externí autentifikace. Pokud se jedná o interní autentifikaci, všechno se odehrává v rámci přihlašovacího skriptu modulu Registrace a personalizace a ve skriptech WebToDate pro dynamické zobrazování obsahu (zpráv, stránek a souborů). Pokud se jedná o externí autentifikaci, využívají se následující skripty v adresáři /scripts/modules/access/.
| Skript | Funkce |
| login.php | Přihlašovací stránka, na které je umístěn přihlašovací formulář |
| logout.php | Odhlašovací skript |
Přihlašovací skript ve skutečnosti v tomto případě žádné přihlášení neprovádí, pouze se naplní údaje v uživatelské session. To znamená, že se ve chvíli odeslání přihlašovacího formuláře nekomunikuje s externím autentifikačním serverem, to se děje až při prvním pokusu o zobrazení stránky, která není veřejně přístupná. Vyplývá z toho mimo jiné to, že uživatel zde může zadat i špatné nevalidní údaje, v tomto kroku se tato skutečnost nezjistí.
Odhlašovací skript pak vymaže v session všechny relevantní údaje týkající se přístupů uživatele a přesměruje na stránku, ze které byl volán, pokud není schopen tuto stránku identifikovat tak přesměruje na úvodní stránku. Skript je určen k tomu, aby uživatel mohl následně znovu zadat jiné přihlašovací údaje.
Více viz kapitola Externí autentifikace.
Klíčová slova modulu
V předloze pro přihlašovací stránku login.php lze použít následující klíčová slova.
| Klíčová slova použitelná v předloze pro přihlašovací stránku | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_REGISTR(USERNAME)--> | Uživatelské jméno | |
| <!--WTD_REGISTR(PASSWORD)--> | Heslo | |
| <!--WTD_IF(REQUIRED,"… text ….")--> | Nejsou vyplněny oba povinné údaje | |
Formulářová pole a další možné parametry
Přihlašovací skript používá následující parametry
| Parametry skriptu login.php pro přihlášení | ||
| Název pole nebo parametru | Význam | Poznámka |
| username | Uživatelské jméno | |
| password | Heslo | |
Příklad přihlašovacího formuláře uvádí následující kód.
<form action="/scripts/modules/access/login.php" method="post">
<table>
<tr>
<td align="right">
<label for="username">Uživatelské jméno</label>
</td>
<td>
<input type="text" name="username" id="username" value="<!--WTD_REGISTR(USERNAME)-->" maxlength="20" />
</td>
</tr>
<tr>
<td align="right">
<label for="password">Heslo</label>
</td>
<td>
<input type="password" name="password" id="password" value="<!--WTD_REGISTR(PASSWORD)-->" maxlength="20" />
</td>
</tr>
<tr>
<td align="right" colspan="2">
<input type="submit" name="send" id="send" value="Odeslat" />
</td>
</tr>
</table>
</form>
Administrační rozhraní
Nabídka modulu
Nabídka modulu vypadá následovně:
Nastavení
- Globální
- Stránky
Administrace
- Předvolby
- Přístupové kódy
- Pravidla
- Neveřejné zprávy
- Uživatelé
- Kontrola dat
K administrační části modulu mají přístup pouze administrátoři WebToDate.
Nastavení
Stránky
Zde se nastavuje zejména stránka, která se má zobrazit, pokud je uživatel přihlášen, ale k dané zprávě nemá přístup (Stránka pro odmítnutí přístupu). Nastavit lze tuto stránku pro každý jazyk, přesměrování na příslušnou stránku se pak řídí jazykem zprávy, která se má zobrazit�.
Pokud je v předvolbách nastavena externí autentifikace, zobrazuje se v tomto formuláři ještě volba druhé stránky – Předloha přihlašovací stránky. Jedná se o předlohu pro skript /scripts/modules/access/login.php, který se používá pro přihlášení v případě externí autentifikace.

Administrace
Předvolby
Ve formuláři Předvolby se nastavuje pouze způsob autentifikace, ve většině případů se volí interní.

Volbu nastavte hned na začátku konfigurace modulu, volbu lze změnit i dodatečně. Volba má vliv na chování administrační části, např. na seznam stránek, které se nastavují v nabídce Nastavení – Globální – Stránky.
Přístupové kódy
Pomocí této funkce se zadávají přístupové kódy odpovídající definovaným pravidlům modulu. Funkci má smysl používat pouze v případě, že je autentifikace nastavena na externí.
V pravé horní části se objevuje seznam položek obsahující název pravidla a přístupový kód. Klepnutím na název pravidla se ve spodní části zobrazuje formulář pro editaci této položky.

Ve formuláři musí být povinně vyplněna obě pole. Stejný přístupový kód lze zadat i pro více pravidel, naopak jednomu pravidlu je možné přiřadit pouze jeden přístupový kód. Do pole Kód lze zadat jakýkoliv textový řetězec, nabídka Pravidla obsahuje seznam pravidel definovaných pomocí funkce Administrace – Pravidla.
Význam zde nastavovaných položek je takový, že pokud zobrazovaná stránka (zpráva, stránka, zdroj) vyhovuje zvolenému pravidlu, je použit zadaný kód pro vyhodnocení přístup. Externímu autentifikačnímu serveru se zasílá trojice uživatelské jméno – heslo – kód, externí server vrátí zpět informaci o tom, zda uživatel má či nemá přístup. Tato funkce je podrobně popsána v kapitole Externí autentifikace.
Pravidla
Hlavním objektem, se kterým pracuje administrátor tohoto modulu jsou tzv. Pravidla. Pravidlem se rozumí skupina kritérií, u kterých lze jednoznačně říci, zda daná položka těmto kritériím vyhovuje. Součástí těchto kritérií může být:
- Publikace
- Téma
- Kategorie s možností "Včetně podkategorií"
- Jazyk
- Datum starší než (resp. počet dní, po kterém je zpráva považována za neveřejnou)
- Datum mladší než (resp. počet dní, před kterým je zpráva považována za neveřejnou)
Administrátor pak definuje jedno pravidla určující, zda daná zpráva patří do neveřejné části (toto pravidlo určuje, které zprávy jsou neveřejné, ostatní, které tomuto pravidlu nevyhovují, jsou veřejné).
Dále může administrátor definovat libovolné množství pravidel, která mohou jemněji dělit množinu neveřejných zpráv a tato pravidla přiřadit různým skupinám uživatelů (skupiny uživatelů jsou definovány v modulu Registrace a Personalizace).
Při vyvolání skriptu pro zobrazení položky se postupuje takto:
- Zjistí se, zda daná položka vyhovuje alespoň jednomu pravidlu pro neveřejné zprávy, pokud ano, uživatel je přesměrován na přihlašovací skript (pokud se ještě nepřihlásil)
- Jakmile se uživatel přihlásil, je vrácen zpět na stránku pro zobrazení vybrané položky, přičemž díky přihlášení je známo, v jaké je skupině.
- Spustí se algoritmus pro testování pravidel přiřazených dané skupině uživatelů. Jakmile nějaké pravidlo vrátí, že daná zpráva tomuto pravidlu vyhovuje, dál se již netestuje a zpráva se zobrazí. Pokud se zjistí, že daná zpráva nevyhovuje žádnému pravidlu pro danou skupinu uživatelů, je uživatel přesměrován na příslušnou stránku, která říká, že k dané zprávě nemá přístup. V tomto případě pravidlo určuje, zda daná skupina uživatelů má k dané zprávě přístup.
U každé položky je volba všechny, což znamená, že daná položka není do pravidla zahrnuta. Stejně jako seznamy obsahuje formulář pro pravidla tlačítko Test, které zobrazí prvních 10 zpráv vyhovujících danému pravidlu.
Pravidla se aplikují při zobrazování zpráv, stránek a souborů z databáze zdrojů. Co se týká stránek WebToDate, mohou vyvstat dva různé požadavky na přístup k nim. Chceme např. omezit přístup k obsahu určité kategorie ve stromu kategorií WebToDate. To v praxi může znamenat, že buď požadujeme přihlášení pro kompletní obsah, tj. zprávy, soubory i stránky, které prezentují seznamy položek v této kategorii apod., nebo chceme zamezit přístupu anonymních uživatelů ke zprávám a souborům, ale naopak chceme, aby uživatelé měli možnost zobrazit výpis obsahu dané kategorie, tj. zobrazit běžné stránky WebToDate v této kategorii a teprve po klepnutí na odkaz na konkrétní zprávu vyžadovat přihlášení. Pro tyto účely je v definici pravidla zaškrtávací okénko Aplikovat i na stránky. Pokud není zaškrtnuto, při zobrazení stránky WebToDate (což odpovídá URL /scripts/detail.php?pgid=xxx) je dané pravidlo ignorováno.
Neveřejné zprávy
V sekci Neveřejné zprávy se vybírají pravidla pro stanovení, zda zpráva je neveřejná. Formulář obsahuje pouze dvě pole, na jedné straně seznam použitých pravidel a na druhé seznam ostatních pravidel (obdobný interface jako pro nastavení přístupových práv pro moduly).

Uživatelé
V sekci Uživatelé se nastavuje, která pravidla určují přístup kterým skupinám uživatelů. V horní části se zobrazuje seznam skupin uživatelů a počet nastavených pravidel (aby administrátor viděl, kterým kategoriím nastavil pravidla), v dolním formulář stejný jako pro Neveřejné zprávy, kde ovšem nastavení platí pro skupinu uživatelů vybranou nahoře.

Pokud potřebujete vytvořit novou skupinu uživatelů, musíte se přejít do administrace modulu Registrace a personalizace, kde se skupiny uživatelů spravují.
To, že je nějaké pravidlo v poli Použitá pravidla znamená, že právě upravovaná skupina uživatelů ke zprávám vyhovujícím tomuto pravidlu má přístup.
Kontrola dat
Aby byla pravidla modulu funkční nejen pro zprávy, ale i pro stránky a soubory z databáze zdrojů, musí být tyto soubory a stránky uloženy v privátní zóně – to znamená, že se nenacházejí v části www serveru, která je přímo přístupná, ale jsou uloženy v adresářích, na které není přímý přístup a odtud se načítají ve chvíli zobrazení pomocí dynamických skriptů. Jedině v tom případě je zajištěno, že lze ověřit přístupová práva a stránku či soubor poskytnout pouze tomu, kdo k této položce má dle pravidel modulu Neveřejná část přístup.
Funkce Kontrola dat vyhledává položky, které nejsou odpovídajícím způsobem zabezpečené. To znamená, že vyhovují pravidlům stanoveným pro neveřejné položky, ale nenacházejí se v privátní zóně.

Více o veřejné a privátní zóně naleznete v Referenční příručce WebToDate. Položky, které se zde vypíší je vhodné přesunout do privátní zóny, jinak je může zobrazovat a stahovat kterýkoli anonymní uživatel.
Externí autentifikace
Úvod
Modul umožňuje i externí autentifikaci. To znamená, že v takovém případě se při ověřování přístupu nepoužívá modul Registrace a personalizace, ale externí server. Při zobrazení určité položky (zprávy, stránky apod.) se v tomto režimu nejprve vyhodnocuje, zda je položka přístupná anonymním uživatelům či nikoliv – v tomto se oba režimy nijak neliší. V případě, že je zjištěno, že položka není anonymně přístupná, použije se algoritmus externího ověřování. Algoritmus ověřování v případě interní autentifikace je graficky znázorněn v kapitole Základní principy, algoritmus v případě externí autentifikace znázorňuje následující diagram.

V režimu externí autentifikace se nastavují dvojice pravidlo – kód. To znamená, že pokud zpráva (nebo jiný objekt) vyhovuje danému pravidlu modulu, je vyžadován zadaný kód. Kód je textový řetězec zadávaný administrátorem WebToDate pomocí funkce Administrace - Přístupové kódy modulu, v rámci uživatelské session je vytvářeno pole se dvěma sloupci:
- Kód
- Uživatel má / nemá přístup k danému kódu
Při zobrazování objektu se pak postupuje v tomto režimu následovně:
- Je zjišťováno, zda je či není daná stránka anonymně přístupná. Pokud není, vyžaduje se přihlášení, přičemž toto přihlášení se provádí přes formulář modulu (/scripts/modules/access/login.php). Pokud se již uživatel přes tento formulář přihlásil, je jeho uživatelské jméno a heslo v uživatelské session a tudíž se stránka pro přihlášení nezobrazí.
- Prochází se pravidla modulu, která mají přidělen nějaký kód. Na základě těchto pravidel se odvodí, zda uživatel má či nemá přístup k dané položce. Pokud má, je položka zobrazena, jinak je přesměrován na stránku Odmítnutí přístupu.
Pro pravidla a jejich kódy platí:
- Každé pravidlo může mít přiřazen maximálně jeden kód.
- Jeden kód může být použit pro více pravidel.
Při testování pravidel a kódů se postupuje následovně:
- Zjišťuje se, zda zpráva vyhovuje pravidlu. Pokud ne, postupuje se na další pravidlo.
- Pokud zpráva pravidlu vyhovuje, zjistí se kód nastavený pro pravidlo. Kód se nejprve hledá ve výše zmíněném poli v session (aby nedocházelo k zbytečnému dotazování na externí server). Pokud je zde kód nalezen, je použita tato informace a uživateli je stránka zobrazena nebo přístup odmítnut.
- Pokud kód není nalezen v session, vyvolá se dotaz do externího zdroje (zasílá se jméno, heslo a kód). Externí zdroj vrátí informaci, zda k danému kódu je nebo není uživatel autentifikován. Tato informace se v každém případě přidá do tabulky kódů v session. Pokud uživatel je autentifikován, stránka se zobrazí, jinak se pokračuje na další pravidlo.
- Jsou-li projita všechna pravidla a uživateli nebyl přístup podle nějakého pravidla povolen, nelze stránku zobrazit a přístup je zamítnut.
Funkce pro dotazování externího zdroje jsou umístěny do samostatné části tak, aby se jednalo o vyměnitelný plugin. Modul sám používá abstraktní funkci, která má jako parametry už. jméno, heslo a kód, funkce vrací hodnoty povolení / odmítnutí přístupu, takže samotný modul je odstíněn od vlastní komunikace s externím zdrojem.
Postup konfigurace
Doporučený postup konfigurace je následující:
- V předvolbách modulu se nastaví externí režim autentifikace.
- Vytvoří se předloha pro přihlašovací stránku, vzorový kód přihlašovacího formuláře je uveden v kapitole Formulářová pole a další možné parametry.
- Definují se pravidla modulu a nastavení Administrace – Neveřejné zprávy; v tomto se postup nijak neliší od postupů pro interní autentifikaci.
- Pomocí funkce Administrace – Přístupové kódy se definují dvojice pravidlo – kód. V tomto režimu se vůbec nepoužívá funkce Administrace – Uživatelé. Výslednou funkčnost ovlivňují pouze pravidla, která jsou nastavena pomocí funkce Neveřejné zprávy a ta, která jsou uvedená v seznamu Přístupové kódy. V databázi modulu (tj. v seznamu Pravidla) mohou být definována i jiná pravidla než která pak figurují v obou zmíněných nastaveních, ta jsou při vyhodnocování přístupu kompletně ignorována.
- Definuje se stránka Odmítnutí přístupu. Na stránky webové prezentace je možné umístit odkazy na skript pro přihlášení a odhlášení, na přihlašovací skript je ovšem uživatel v případě potřeby přesměrován automaticky.
Plugin pro bránu POSTABO
Momentálně je k dispozici pouze ověřovací plugin pro bránu POSTABO pro správu předplatitelů novinových titulů. Kód pluginu se nachází v souboru /scripts/modules/access/external/_com_inc.php. Jako přístupové kódy se používají číselné kódy odpovídající jednotlivým novinovým titulům, jak je používá tento server.
Do konfiguračního souboru global.php je nutné pro komunikaci s tímto serverem umístit konstantu definující URL brány:
define( 'EXTERNAL_ACCESS_SERVER', 'https://postabo.cpost.cz/pet/pet.php/');
Komunikace s bránou je vedena před protokol https. Funkce vyžaduje v PHP aktivní extenzi CURL, je tedy třeba např. ve Windows verzi odkomentovat v souboru php.ini následující řádek:
extension=php_curl.dll