Zpět na domů

SPN pro autentizaci 1C na Linux webovém serveru

Článek popisuje řešení problému autentizace 1C při webovém serveru na Linuxu a serveru aplikací na Windows. Klíč – přidání SPN záznamu pro servisní účet. Uvádějí se příkazy setspn, konfigurace krb5 a mod_auth_kerb.

Oprava autentizace 1C: SPN na Linux+Windows
Advertisement 728x90

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á:

Google AdInline article slot
  • 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.

Google AdInline article slot

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:

Google AdInline article slot
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 principal HTTP/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 kinit na Linuxu pro ověření Kerberos.
  • Bezpečnost: Omezte SPN pouze na potřebné služby.

— Editorial Team

Advertisement 728x90

Číst dál