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:
- 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.
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:
setspn -S HTTP/fakespn.svc_1c.domain.local svc_1c
Wobei:
HTTP/fakespn.svc_1c.domain.localein fiktiver SPN ist.svc_1cdas 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 DienstprinzipalHTTP/webserver.domain.localhinzuzufügen. - krb5.conf: Geben Sie Realm und KDC in
/etc/krb5.confan.
[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
kinitunter Linux, um Kerberos zu überprüfen. - Sicherheit: Beschränken Sie SPNs auf notwendige Dienste.
— Editorial Team
Noch keine Kommentare.