Automatické přihlašování proti Active Directory (Windows Authentication)

Princip a protokoly

Automatické přihlášení je zapnuté jen tehdy, když jsou v konfiguraci nastavené obě volby `LDAP:active = true` a `LDAP:automaticLogin = true`. Současné zapnutí `LDAP:active` a `KeyCloak:active` aplikace odmítne už při startu. Výchozím schématem ověření je pak Negotiate (balíček `Microsoft.AspNetCore.Authentication.Negotiate`). Prohlížeč a server se přes něj domluví na protokolu Kerberos, a když to nejde, automaticky přejdou na NTLM. Aplikace zpracuje všechny tři typy identity, které mohou přijít: `Kerberos`, `NTLM` i `Negotiate`.
Aplikace běží na serveru Kestrel. Windows ověření proto provádí sama aplikace, ne IIS. Při nasazení pod IIS by ověření převzalo IIS a muselo by tam být zapnuté Windows Authentication. Ověření přes URL klíč (schéma `URLKEY`) funguje dál. Pokud v požadavku klíč chybí, aplikace vyvolá výzvu k ověření přes Negotiate.
Požadavky na infrastrukturu (nejsou součástí kódu):

Získání a uložení uživatele při přihlášení

Po úspěšném Windows ověření převede `ClaimsTransformation` doménovou identitu na aplikačního uživatele. Volá k tomu `UserActiveDirectoryManager.NtlmCheckAndSyncLoginAgainstActiveDirectory`. Pro každé připojení k AD z tabulky `ActiveDirectories` (připojení přes servisní účet) proběhne:
  1. Dohledání uživatele v AD podle `sAMAccountName`. Zkouší se jméno s doménou (`DOMENA\uzivatel`) i bez ní.
  2. Zjištění členství ve všech AD skupinách, které jsou namapované na skupiny Infoportu.
  3. Kontrola `LDAP:OnlyActiveDirectoryGroups`: pokud je volba zapnutá a uživatel není v žádné namapované AD skupině, nepřihlásí se a do DB se nezapíše.
  4. Uložení do DB Infoportu:
  1. Synchronizace skupin a rolí: uživatele přidá do skupin Infoportu podle aktuálního členství v AD skupinách, nebo ho z nich odebere. Stejně upraví i roli `Repository` v příslušných repozitářích.
  2. Kontrola přístupu do repozitáře a přihlášení:

Vztah k jobu na AD synchronizaci

Automatické přihlášení nevyžaduje, aby běžel job na synchronizaci AD (`SynchronizeADUsersJob`). Uživatel se založí, aktualizuje a zařadí do skupin přímo při přihlášení. K přihlášení stačí:
Job je doplňkový. Dávkově synchronizuje všechny členy namapovaných skupin, takže uživatelé existují v Infoportu dřív, než se poprvé přihlásí, a lze jim předem nastavovat práva. Změny v AD (odchody, změny členství) se díky němu promítnou i u uživatelů, kteří se nepřihlašují.

Omezení a známá rizika

Opravené nedostatky (říjen 2026)


V ručním LDAP přihlášení (`AccountController`) zůstává jedna drobnost: po nalezení skupiny se pokračuje v procházení dalších repozitářů. Uživatel se tak může přepnout víckrát a platí poslední vhodný repozitář místo prvního. 

Revision #1
Created 13 October 2026 10:26:54 by Jitka Kalíšová
Updated 13 October 2026 10:27:10 by Jitka Kalíšová