Konfigurace Kerberos ověřování pro 1C: webový server na Linuxu, aplikační server na Windows
Při publikaci databáze 1C na webovém serveru pod Linuxem s aplikačním serverem na Windows standardní návody pro nastavení ověřování často selhávají. I když v technickém logu aplikačního serveru je vidět uživatelský účet předávaný z webového serveru, platforma 1C stále vyžaduje zadání přihlašovacích údajů. Kořen problému spočívá v chybějícím SPN záznamu pro uživatelský účet, pod kterým je spuštěn aplikační server 1C.
Tento detail není zmíněn ve většině návodů, včetně populárních článků na Infostartu. Řešení bylo nalezeno experimentálně studiem Kerberos ověřování v Linuxu a Windows.
Požadavky na infrastrukturu
Tento scénář předpokládá:
- Webový server (Apache/Nginx) na Linuxu s modulem pro NTLM/Kerberos.
- Aplikační server 1C na Windows Serveru.
- Aktivní adresář (AD) pro správu uživatelských účtů.
- IIS nebo ekvivalent na serveru 1C pro zpracování požadavků.
Předběžné nastavení zahrnuje publikaci databáze přes webový server, konfiguraci mod_auth_kerb (pro Apache) nebo nginx s lua-skripty pro předávání hlaviček ověřování. V logu 1C je vidět předávaný účet, ale ověřování selhává.
Diagnostika problému
Zkontrolujte technický log aplikačního serveru (Parametry spuštění: -reg nebo přes konzoli clusteru). Hledejte záznamy ve tvaru:
{User: domain\username} from web-server
Pokud je účet vidět, ale žádost o přihlašovací údaje se opakuje – problém je v SPN.
Kroky diagnostiky:
- Spusťte
setspn -Q /pro uživatelský účet služby 1C (např.svc_1c). - Ověřte absenci SPN ve výstupu.
- Otestujte přístup přes prohlížeč s podporou NTLM (IE/Edge v Intranet zóně).
- Logy webového serveru:
grep -i kerberos /var/log/apache2/error.log.
Řešení: přidání SPN záznamu
Vytvořte SPN záznam pro uživatelský účet, pod kterým běží aplikační server. Hodnota SPN je libovolná – nepoužívá se v provozu, ale je vyžadována pro interní logiku ověřování 1C.
Příkaz na řadiči domény nebo stroji s RSAT:
setspn -S HTTP/fakespn.svc_1c.domain.local svc_1c
Kde:
HTTP/fakespn.svc_1c.domain.local– fiktivní SPN.svc_1c– uživatelský účet služby 1C.
Ověřte: setspn -L svc_1c. Po přidání restartujte aplikační server a otestujte přístup.
Ověřování bude fungovat bez vyžadování přihlašovacích údajů. Důvod: platforma 1C kontroluje existenci SPN před přijetím Kerberos/NTLM tokenu.
Další nastavení Kerberos
- Keytab na Linuxu:
ktutil, přidejte klíč pro service principalHTTP/webserver.domain.local. - krb5.conf: Zadejte realm, KDC v
/etc/krb5.conf.
[realms]
DOMAIN.LOCAL = {
kdc = dc.domain.local
}
- Konfigurace Apache (mod_auth_kerb):
<Location /1c>
AuthType Kerberos
AuthName "Kerberos Login"
KrblAuthRealms DOMAIN.LOCAL
KrbMethodNegotiate On
KrbsaveCredentials Off
</Location>
Co je důležité
- SPN je povinný: I fiktivní SPN odblokuje ověřování v 1C.
- Logy pro ladění: Technický log 1C + error.log webového serveru.
- Účet služby: Spouštějte server 1C pod doménovým účtem s potřebnými právy.
- Testování: Použijte
kinitna Linuxu pro ověření Kerberos. - Bezpečnost: Omezte SPN pouze na potřebné služby.
— Editorial Team
Zatím žádné komentáře.