Zurück zur Startseite

SPN für 1C-Authentifizierung auf Linux-Webserver

Der Artikel beschreibt die Lösung des 1C-Authentifizierungsproblems mit einem Webserver auf Linux und einem Anwendungsserver auf Windows. Der Schlüssel ist das Hinzufügen eines SPN-Eintrags für das Dienstkonto. Befehle setspn, krb5- und mod_auth_kerb-Konfigurationen werden bereitgestellt.

1C-Authentifizierungsfix: SPN auf Linux+Windows
Advertisement 728x90

Kerberos-Authentifizierung für 1C einrichten: Linux-Webserver mit Windows-Anwendungsserver

Beim Veröffentlichen einer 1C-Datenbank auf einem Linux-Webserver mit einem Windows-Anwendungsserver reichen Standardanleitungen zur Authentifizierungskonfiguration oft nicht aus. Selbst wenn das technische Protokoll des Anwendungsservers das vom Webserver übergebene Benutzerkonto anzeigt, fordert die Plattform weiterhin Anmeldedaten an. Die Ursache liegt im Fehlen eines SPN-Eintrags für das Dienstkonto, unter dem der 1C-Anwendungsserver läuft.

Dieses Detail fehlt in den meisten Anleitungen, einschließlich beliebter Artikel auf Infostart. Die Lösung wurde experimentell durch die Untersuchung der Kerberos-Authentifizierung unter Linux und Windows entdeckt.

Infrastrukturanforderungen

Das Szenario setzt voraus:

Google AdInline article slot
  • Einen Webserver (Apache/Nginx) unter Linux mit einem NTLM/Kerberos-Modul.
  • Einen 1C-Anwendungsserver unter Windows Server.
  • Eine Active Directory (AD) zur Kontoverwaltung.
  • IIS oder einen ähnlichen Dienst auf dem 1C-Server zur Bearbeitung von Anfragen.

Die vorbereitende Einrichtung umfasst die Veröffentlichung der Datenbank über den Webserver, die Konfiguration von mod_auth_kerb (für Apache) oder nginx mit Lua-Skripten zur Weitergabe von Authentifizierungs-Headern. Das 1C-Protokoll zeigt das übermittelte Konto an, aber die Authentifizierung schlägt fehl.

Problembehebung

Überprüfen Sie das technische Protokoll des Anwendungsservers (Startparameter: -reg oder über die Clusterkonsole). Suchen Sie nach Einträgen wie:

{User: domain\username} from web-server

Wenn das Konto sichtbar ist, aber die Aufforderung zur Eingabe von Anmeldedaten bestehen bleibt, liegt das Problem beim SPN.

Google AdInline article slot

Diagnoseschritte:

  • Führen Sie setspn -Q / für das 1C-Dienstkonto (z.B. svc_1c) aus.
  • Überprüfen Sie das Fehlen eines SPN in der Ausgabe.
  • Testen Sie den Zugriff über einen Browser, der NTLM unterstützt (IE/Edge in der Intranet-Zone).
  • Überprüfen Sie die Webserver-Protokolle: grep -i kerberos /var/log/apache2/error.log.

Lösung: Hinzufügen eines SPN-Eintrags

Erstellen Sie einen SPN-Eintrag für das Dienstkonto, unter dem der Anwendungsserver läuft. Der SPN-Wert ist beliebig – er wird nicht im Datenverkehr verwendet, ist aber für die interne Authentifizierungslogik von 1C erforderlich.

Befehl auf dem DC oder einem Rechner mit RSAT:

Google AdInline article slot
setspn -S HTTP/fakespn.svc_1c.domain.local svc_1c

Wobei:

  • HTTP/fakespn.svc_1c.domain.local ein fiktiver SPN ist.
  • svc_1c das 1C-Dienstkonto ist.

Überprüfen Sie mit: setspn -L svc_1c. Nach dem Hinzufügen starten Sie den Anwendungsserver neu und testen den Zugriff.

Die Authentifizierung funktioniert nun ohne Aufforderung zur Eingabe von Anmeldedaten. Der Grund: Die 1C-Plattform prüft das Vorhandensein eines SPN, bevor sie Kerberos/NTLM-Token akzeptiert.

Zusätzliche Kerberos-Einstellungen

  • Keytab unter Linux: Verwenden Sie ktutil, um einen Schlüssel für den Dienstprinzipal HTTP/webserver.domain.local hinzuzufügen.
  • krb5.conf: Geben Sie Realm und KDC in /etc/krb5.conf an.
[realms]
DOMAIN.LOCAL = {
kdc = dc.domain.local
}
  • Apache-Konfiguration (mod_auth_kerb):
<Location /1c>
AuthType Kerberos
AuthName "Kerberos Login"
KrblAuthRealms DOMAIN.LOCAL
KrbMethodNegotiate On
KrbsaveCredentials Off
</Location>

Wichtige Punkte

  • SPN ist obligatorisch: Selbst ein fiktiver SPN ermöglicht die 1C-Authentifizierung.
  • Protokolle zur Fehlerbehebung: Verwenden Sie das technische 1C-Protokoll und error.log des Webservers.
  • Dienstkonto: Führen Sie den 1C-Server unter einem Domänenkonto mit entsprechenden Berechtigungen aus.
  • Testen: Verwenden Sie kinit unter Linux, um Kerberos zu überprüfen.
  • Sicherheit: Beschränken Sie SPNs auf notwendige Dienste.

— Editorial Team

Advertisement 728x90

Weiterlesen