RON dokumentace

Způsoby přihlašování

Popis možných způsobu přihlašování uživatelů do RONPortálu

Základní způsob autentizace pomocí jména a hesla

Při výchozím nastavení se uživatelé přihlašují pomocí uživatelského jména a hesla uloženého v databázi.

Automatické přihlašování uživatele počítače do RONPortálu pomocí Windows authentication

Při automatickém přihlášení se nekontroluje heslo do docházky. Je ale možné provést odhlášení a následné přihlášení jiného uživatele. Proto je důležité nastavit hesla nebo přepnout kódování hesel na MD5 nebo SHA i v případě používání automatického přihlašování!

Prohlížeč Firefox může být nakonfigurován tak, že neposílá automaticky informace o uživateli. Takto je možné zapnout, aby informace posílal:

případně totéž pro network.automatic-ntlm-auth.trusted-uris (záleží jak jsou nastavení zprostředkovatelé v IIS - Ověřování)
viz jedna z odpovědí zde

Prohlížeč Chrome si přebírá nastavení povolených serverů z nastavení IE, respektive z windows (Ovládací panely - Síť a Internet - Možnosti Internetu)

záložka Zabezpečení, položka Důvěryhodné, kliknout na tlačítko Weby, a přidat server (tj. adresu např. http://jmenoserveru )

Přihlásit se jako (login as)

Zapne se v _appdbset.php pomocí řádku
$enable_login_as = 1;
uživatelům se pak nastaví práva "Přihlášení jako jiný uživatel"

Ověřování jména a hesla pomocí LDAP serveru (doménový server a podobně)

V PHP musí být zapnuta podpora LDAP. Zkontrolujte jestli máte v PHP nainstalován soubor php_ldap.dll (soubor musí být v adresáři, ve kterém PHP hledá rozšíření - položka extension_dir v info.php). Podpora LDAP se pak v PHP.ini zapne pomocí řádku
extension = php_ldap.dll
- nastavte v _appdbset.php připojení k LDAP serveru:
// Verze pro Active directory:
$ldap_server = 'JMENO_SERVERU';
$ldap_port = 389;  // zadani portu neni povinne, pripadne muze byt i v ldap_server
$ldap_nameprefix = 'JMENO_DOMENY\\';
$ldap_namesuffix = '';
// Verze pro OpenLDAP
$ldap_server = 'JMENO_SERVERU';
$ldap_nameprefix = 'cn=';        // nebo 'uid=';
$ldap_namesuffix = ',dc=domena,dc=cz';
// Dale se muzou nastavit options, napriklad takto:
$ldap_options = array( LDAP_OPT_PROTOCOL_VERSION => 3 );
// Je možné také kombinované ověřování - uživatelé, kteří nemají v AD účet, se ověří přímo pomocí docházky.
// Ale POZOR! V tom případě musí být nastaveno $ldap_user, $ldap_assword a $ldap_search_dn (viz dále)
// Zapne se takto:
$ldap_only_existing_users = true;

Uživatelé musí mít stejná přihlašovací jména jako do domény. Hesla z programu Docházka se pak vůbec nepoužijí. Místo toho ověřuje heslo LDAP server. POZOR! Uživatelé na LDAP serveru nesmí mít prázdné heslo, jinak jim nebude přihlášení fungovat! $ldap_nameprefix se automaticky připojí na začátek zadaného uživatelského jména, takže uživatelé pak zadávají jméno bez domény.

Někdy může být problém v tom, že je potřeba nejdříve zjistit DN (distinguished name) uživatele. V tom případě je potřeba nastavit "servisní" účet, kterým se z LDAP zjistí DN přihlášeného uživatele a pak se teprve ověří. Servisní účet se pak konfiguruje takto:

$ldap_user = 'cn=jmeno-uzivatele,dc=domena,dc=cz';  // pripadne i 'domena\\jmeno_uzivatele' - nutno odzkouset
$ldap_password = 'heslo';
$ldap_search_dn = 'dc=domena,dc=cz';  // kde se uzivatel hleda
// $ldap_search_filter = '(sAMAccountName={$loginname})';
//   Nepovinne - urcuje filtr pro funkci ldap_search s parametrem {$loginname}.
Na Apache i v IIS jsem odzkoušel tyto varianty jména serveru (pro Active directory):
$ldap_server = 'jmeno_serveru';
$ldap_server = 'jmeno_serveru:389';
$ldap_server = 'ip_adresa_serveru';
$ldap_server = 'ip_adresa_serveru:389';
389 je výchozí číslo portu, které používá LDAP server - konkrétní jméno serveru a číslo portu záleží na konfiguraci serveru.

V případě, že je špatně nastavené jméno doménového serveru, nebo se není možné z nějakého jiného důvodu (např. firewall) k serveru připojit, zobrazí se tato chybová hláška:

Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in C:\inetpub\wwwroot\ads\ron\ronapp.php on line 269
$ldap_nameprefix obsahuje prefix, který se připojí před jméno zadané uživatelem,
$ldap_namesuffix se připojí za jméno zadané uživatelem. Příklad konfigurace:
$ldap_nameprefix = 'ron\\';
uživatel pak má v docházce (karta osoby, sekce RON Portál, práva, záložka RON Portál - položka Přihlašovací jméno) zadáno přihlašovací jméno např. novak a pro ověření uživatelského jména se použije ron\novak
tj. prefix se připojí před jméno. Heslo uživatele v síti nesmí být prázdné!
V případě zadání špatného uživatelského jména nebo hesla se může zobrazit chybová hláška Invalid credentials:
Warning: ldap_bind(): Unable to bind to server: Invalid credentials in C:\inetpub\wwwroot\ads\ron\ronapp.php on line 269

LDAPS

Pro použití LDAPS je potřeba vytvořit konfiguraci podle návodu zde: https://www.samuraj-cz.com/clanek/jak-na-ldap-a-ldaps-v-php-pod-windows/. Konkrétně vytovřit soubor C:\openldap\sysconf\ldap.conf (v Linuxu /etc/openldap/ldap.conf) a v něm buď vypnout kontrolu certifikátu:

TLS_REQCERT never

nebo nakonfigurovat certifikát. Adresa serveru se pak zadává se schématem https://

Přihlašování do RONPortálu pomocí ID média a čtečky karet

POZOR! TENTO ZPŮSOB PŘIHLAŠOVÁNÍ NENÍ ŽÁDNÝM ZPŮSOBEM ZABEZPEČEN!

K počítači musí být připojena čtečka, která odesílá načtené číslo do klávesnicového bufferu pro čtečky RD3 to je možné zajistit pomocí utility RD_Reader nebo služby RD_Reader_Service respektive RD_Reader_x64 nebo RD_Reader_Service_64. Je vhodné nastavit čtečku/RD_Reader tak, aby se na konci vložil enter

- zkopírovat z podadresáře install soubor idlogin.php do hlavního adresáře (rootu) RONPortálu pro přihlášení pomocí ID média se pak použije startovací stránka http://...../idlogin.php

- přihlašování kartou je možné zapnout také v _appdbset.php přidáním řádku

$enableidlogin = true;

v tomto případě ale pak bude přihlášení pomocí id média zapnuto vždy a nebude možná volba přihlášení pomocí volby stránky

- v přihlašovací stránce RONPortálu se pak zobrazí místo jména a hesla jenom pole pro zadání ID média, po přiložení karty se pole vyplní a provede se přihlášení

Zabezpečené přihlašování do RONPortálu pomocí ID média a čtečky karet

Umožňuje zabezpečit přihlašování kartou pomocí URL odkazů generovaných externím programem. URL odkazy pro přihlášení kartou pak obsahují kromě čísla karty také časové razítko a ověřovací klíč (hash). Navíc mohou být zašifrovány. Zapíná se nastavením:

$enableurlidlogin = 'secure';
$idloginOptions = [
    // 'validity' => 10,

    //'hash' => 'sha1',
    //'hashFormat' => '%ID%;%TIME%;%SALT%'

    //'passphrase' => 'heslo_pro_sifrovani',  // verze se sifrovanim
    //'cipher_algo' => 'AES-128-CBC',
    //'iv' => 'inicializacni_vektor'
];

Konfigurační proměnná $idloginOptions může obsahovat volby:

V případě, že není použito šifrování (v $idloginOptions není zadána volba 'passphrase'), tak URL musí obsahovat parametry:

V případě, že je použito šifrování (v $idloginOptions je zadána volba 'passphrase'), tak URL obsahuje pouze parametr idlogin, ktrý musí obsahovat zašifrovaný a base64 zakódovaný řetězec ve tvaru

    kod_karty;casove_razitko;salt;key

Parametry salt a key jsou nepovinné a používají se jen v případě, že je zapnuto i ověření pomocí hash.