Popis možných způsobu přihlašování uživatelů do RONPortálu
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.
$activedirectorylogin = true;
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 )
$enable_login_as = 1;uživatelům se pak nastaví práva "Přihlášení jako jiný uživatel"
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_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
Warning: ldap_bind(): Unable to bind to server: Invalid credentials in C:\inetpub\wwwroot\ads\ron\ronapp.php on line 269
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://
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í
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.