Zum Inhalt springen

Windows Authentication einrichten

Windows Authentication (auch Integrated Windows Authentication oder IWA genannt) ermöglicht es Benutzern, sich automatisch mit ihren Windows-Domain-Anmeldedaten bei RAMP anzumelden. Vorteile:

  • Nahtloses SSO – Benutzer werden beim Zugriff auf RAMP automatisch angemeldet
  • Keine Anmeldeaufforderungen – Authentifizierung erfolgt transparent
  • Zentrale Verwaltung – Benutzer werden über Active Directory verwaltet
  • Kerberos-Sicherheit – Starke Authentifizierung ohne Übertragung von Passwörtern

Geeignet für: Interne Unternehmensumgebungen, Windows-basierte Infrastruktur, Domain-verbundene Rechner, IIS-gehostete Deployments.

Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:

  • Windows Server mit Active Directory Domain Services
  • IIS (Internet Information Services) installiert
  • Domain-verbundene Server für das Hosting der RAMP-API
  • Dienstkonto mit Active Directory-Leseberechtigungen
  • .NET 10 Runtime auf dem Server installiert
  • Client-Rechner, die Domain-verbunden sind
+--------------+ Windows Auth +--------------+
| Browser | ------------------> | RAMP API |
| (Domain-PC) | (NTLM/Kerberos) | auf IIS |
+--------------+ +--------------+
|
| LDAP (Optional)
v
+--------------+
| Active |
| Directory |
+--------------+

  1. Erstellen Sie ein dediziertes Dienstkonto für den Betrieb von RAMP:

    Terminal-Fenster
    # PowerShell auf dem Domänencontroller
    New-ADUser -Name "RAMP Service" `
    -SamAccountName "ramp-service" `
    -UserPrincipalName "ramp-service@yourdomain.com" `
    -AccountPassword (ConvertTo-SecureString "ComplexPassword123!" -AsPlainText -Force) `
    -Enabled $true `
    -PasswordNeverExpires $true `
    -Description "RAMP Application Service Account"
    # Zur Domänen-Benutzergruppe hinzufügen (Mindestanforderung)
    Add-ADGroupMember -Identity "Domain Users" -Members "ramp-service"
  2. Terminal-Fenster
    # Als Administrator ausführen
    Install-WindowsFeature Web-Windows-Auth

    Alternativ den Server-Manager verwenden:

    1. Server-Manager öffnen -> Verwalten -> Rollen und Features hinzufügen
    2. Navigieren zu: Webserver (IIS) -> Webserver -> Sicherheit
    3. Windows-Authentifizierung aktivieren
    4. Installieren klicken
    1. IIS-Manager öffnen (inetmgr)
    2. Zu Anwendungspools -> Anwendungspool hinzufügen navigieren
    3. Einstellungen:
      • Name: RAMP
      • .NET CLR-Version: Kein verwalteter Code (für .NET 10)
      • Verwalteter Pipeline-Modus: Integriert
      • OK klicken
    4. Rechtsklick auf den RAMP-Anwendungspool -> Erweiterte Einstellungen
    5. Unter Prozessmodell -> Identität: Auf […] klicken
    6. Benutzerdefiniertes Konto auswählen -> Festlegen…
    7. Dienstkonto-Anmeldedaten eingeben:
      • Benutzername: IHREDOMAIN\ramp-service
      • Passwort: [Dienstkonto-Passwort]
      • OK klicken
    1. Rechtsklick auf Websites -> Website hinzufügen (oder vorhandene Website auswählen)
    2. Einstellungen:
      • Websitename: RAMP
      • Anwendungspool: Den oben erstellten RAMP-Pool auswählen
      • Physischer Pfad: C:\inetpub\wwwroot\RAMP (oder Ihr Deployment-Pfad)
      • Bindung: https auf Port 443 mit SSL-Zertifikat
    3. OK klicken
    1. Ihre RAMP-Website in IIS auswählen
    2. Auf das Feature Authentifizierung doppelklicken
    3. Anonyme Authentifizierung deaktivieren (Rechtsklick -> Deaktivieren)
    4. Windows-Authentifizierung aktivieren (Rechtsklick -> Aktivieren)
    5. Rechtsklick auf Windows-Authentifizierung -> Anbieter…
    6. Sicherstellen, dass die Anbieter in dieser Reihenfolge sind (sicherster zuerst):
      • Negotiate (Kerberos)
      • NTLM
    7. Rechtsklick auf Windows-Authentifizierung -> Erweiterte Einstellungen…
    8. Kernelmodusauthentifizierung aktivieren: Aktiviert
    9. OK klicken
  3. Aktualisieren Sie appsettings.json in Ihrem RAMP-API-Deployment-Ordner:

    {
    "Authentication": {
    "Providers": {
    "Windows": {
    "Enabled": true,
    "AutoProvision": true,
    "Domain": "IHREDOMAIN.COM"
    }
    }
    },
    "Jwt": {
    "Secret": "YourSecretKeyAtLeast32CharactersLong!",
    "Issuer": "RAMP.API",
    "Audience": "RAMP.Web",
    "AccessTokenExpirationMinutes": 480
    },
    "ConnectionStrings": {
    "DefaultConnection": "Server=sql-server;Database=RAMP;Integrated Security=true;TrustServerCertificate=true"
    }
    }

    Konfigurationserklärung:

    • Enabled: true – Aktiviert den Windows-Authentifizierungsanbieter
    • AutoProvision: true – Erstellt automatisch RAMP-Benutzerkonten bei der ersten Anmeldung
    • Domain – Ihr Active Directory-Domänenname
  4. Terminal-Fenster
    cd src/RAMP.API
    dotnet publish -c Release -o C:\Publish\RAMP

    Die veröffentlichten Dateien auf Ihren IIS-Server übertragen:

    • Quelle: C:\Publish\RAMP\*
    • Ziel: C:\inetpub\wwwroot\RAMP\ (oder Ihr konfigurierter Pfad)
    Terminal-Fenster
    # Dienstkonto Zugriff auf den Anwendungsordner gewähren
    icacls "C:\inetpub\wwwroot\RAMP" /grant "IHREDOMAIN\ramp-service:(OI)(CI)F" /T
  5. Aktualisieren Sie .env.production in Ihrem RAMP-Frontend-Deployment:

    Terminal-Fenster
    # OIDC deaktivieren (stattdessen Windows Auth verwenden)
    VITE_OIDC_ENABLED=false
    # API-Endpunkt (in der Produktion HTTPS verwenden)
    VITE_API_BASE_URL=https://ramp.yourdomain.com/api
    # Credential-Weiterleitung für Windows Auth aktivieren
    VITE_USE_CREDENTIALS=true
  6. Konfigurieren Sie für erhöhte Sicherheit die Kerberos-Authentifizierung:

    Terminal-Fenster
    # Auf dem Domänencontroller oder mit AD-Admin-Rechten
    setspn -S HTTP/ramp.yourdomain.com IHREDOMAIN\ramp-service
    setspn -S HTTP/ramp IHREDOMAIN\ramp-service
    # Prüfen, ob SPNs erstellt wurden
    setspn -L IHREDOMAIN\ramp-service

    Erwartete Ausgabe:

    Registered ServicePrincipalNames for CN=RAMP Service,CN=Users,DC=yourdomain,DC=com:
    HTTP/ramp.yourdomain.com
    HTTP/ramp

    Damit die automatische Authentifizierung funktioniert, fügen Sie RAMP zur Lokalen Intranetzone hinzu:

    Internet Explorer / Edge:

    1. Internetoptionen -> Sicherheit -> Lokales Intranet -> Websites -> Erweitert
    2. Hinzufügen: https://ramp.yourdomain.com
    3. Sicherstellen, dass “Serverüberprüfung (https:) für alle Sites in dieser Zone verlangen” aktiviert ist

    Chrome (verwendet Windows-Einstellungen):

    • Erbt die Einstellungen der IE/Edge-Zone Lokales Intranet

    Firefox:

    1. Zu about:config navigieren
    2. network.negotiate-auth.trusted-uris auf https://ramp.yourdomain.com setzen
    1. Browser auf einem Domain-verbundenen Client-Computer öffnen
    2. Zu folgendem Adresse navigieren: https://ramp.yourdomain.com
    3. Erwartet: Automatische Anmeldung (keine Anmeldeaufforderung)
    4. Verifizieren: Ihr Domain-Benutzername erscheint in der Benutzeroberfläche (z. B. “IHREDOMAIN\john.doe”)

    In den Browser-Entwicklertools:

    1. Registerkarte Netzwerk öffnen
    2. Auf RAMP zugreifen
    3. Die erste API-Anfrage finden (z. B. /_api/auth/me)
    4. Anfrage-Header auf folgendes prüfen:
      • Authorization: Negotiate ... (Kerberos) – Beste Option
      • Authorization: NTLM ... (NTLM) – Akzeptabel

Anmeldeaufforderung erscheint (Automatische Authentifizierung funktioniert nicht)

Abschnitt betitelt „Anmeldeaufforderung erscheint (Automatische Authentifizierung funktioniert nicht)“

Problem: Browser zeigt Anmeldeaufforderung statt automatischer Authentifizierung.

Lösungen:

  1. Prüfen, ob der Client Domain-verbunden ist:

    Terminal-Fenster
    # Auf dem Client-Rechner
    systeminfo | findstr /B /C:"Domain"

    Sollte Ihre Domain anzeigen, nicht “WORKGROUP”

  2. Website zur Zone Lokales Intranet hinzufügen (siehe Schritt 6)

  3. IE-Sicherheitseinstellungen prüfen:

    • Internetoptionen -> Erweitert
    • Zum Sicherheitsabschnitt scrollen
    • Sicherstellen, dass “Integrierte Windows-Authentifizierung aktivieren” aktiviert ist
  4. Sicherstellen, dass IIS Windows Auth aktiviert ist (siehe Schritt 2)

Problem: Benutzer erhält nach dem Authentifizierungsversuch “401 Nicht autorisiert”.

Lösungen:

  1. Prüfen, ob das Dienstkonto AD-Berechtigungen hat:

    Terminal-Fenster
    # Konto überprüfen
    Get-ADUser -Identity "ramp-service" -Properties Enabled, PasswordNeverExpires
  2. IIS-Anwendungspool-Identität überprüfen:

    • IIS-Manager -> Anwendungspools -> RAMP -> Erweiterte Einstellungen
    • Prozessmodell -> Identität sollte IHREDOMAIN\ramp-service sein
  3. IIS-Protokolle prüfen:

    • Ort: C:\inetpub\logs\LogFiles\W3SVC1\
    • Nach 401-Fehlern mit Unterstatus-Codes suchen:
      • 401.1 – Zugriff verweigert (falsche Anmeldedaten)
      • 401.2 – Zugriff verweigert aufgrund der Serverkonfiguration
      • 401.3 – ACL auf der Ressource
  4. Dienstkonto-Anmeldung testen:

    • Versuchen Sie sich am Server mit den Dienstkonto-Anmeldedaten anzumelden
    • Prüfen Sie, ob es Zugriff auf den RAMP-Ordner hat

Problem: Benutzer meldet sich erfolgreich an, kann aber auf keine Funktionen zugreifen.

Lösungen:

  1. Prüfen, ob Benutzer automatisch bereitgestellt wurde:

    • Als Administrator anmelden
    • Zu Admin -> Benutzer navigieren
    • Nach dem Domain-Benutzernamen suchen
  2. Rollen manuell zuweisen:

    • Benutzer finden -> Rollen zuweisen
    • Geeignete Anwendungsrollen hinzufügen (z. B. Benutzer, Koordinator)
  3. Bootstrap-Administratoren konfigurieren:

Problem: Authentifizierung funktioniert, verwendet aber NTLM statt Kerberos.

Lösungen:

  1. Prüfen, ob SPNs korrekt registriert sind:

    Terminal-Fenster
    setspn -L IHREDOMAIN\ramp-service

    Sollte HTTP/ramp.yourdomain.com und HTTP/ramp anzeigen

  2. Nach doppelten SPNs suchen:

    Terminal-Fenster
    setspn -X

    Duplikate führen zum Kerberos-Fehler. Gefundene Duplikate entfernen.

  3. DNS-Auflösung überprüfen:

    Terminal-Fenster
    nslookup ramp.yourdomain.com

    Sollte zur korrekten Server-IP auflösen

  4. Prüfen, ob Client Kerberos anfordert:

    • klist-Befehl auf dem Client-Rechner verwenden
    • Sollte Ticket für HTTP/ramp.yourdomain.com anzeigen
  5. Kerberos-Protokollierung aktivieren:

    Terminal-Fenster
    # Auf dem Client-Rechner (als Administrator ausführen)
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters" /v LogLevel /t REG_DWORD /d 1 /f

    Ereignisanzeige -> Windows-Protokolle -> System auf Kerberos-Ereignisse prüfen


  • HTTPS verwenden – Gültiges SSL-Zertifikat installieren
  • Dediziertes Dienstkonto – Keine persönlichen oder geteilten Konten verwenden
  • Starkes Dienstkonto-Passwort – 20+ Zeichen, regelmäßig rotieren
  • Geringste Rechte – Dienstkonto hat nur Lesezugriff auf AD
  • Kerberos statt NTLM – SPNs für Kerberos konfigurieren
  • Anonyme Authentifizierung deaktivieren – Nur Windows Auth sollte aktiviert sein
  • Audit-Protokollierung aktivieren – Fehlgeschlagene Authentifizierungsversuche verfolgen
  • Netzwerksicherheit – Firewall-Regeln, AD-Verkehrsverschlüsselung
  • Regelmäßige Updates – Windows- und IIS-Sicherheitspatches anwenden

Empfehlenswert:

  • Dediziertes Dienstkonto verwenden (kein Benutzerkonto)
  • “Passwort läuft nie ab” setzen (aber manuell nach Plan rotieren)
  • Nur erforderliche AD-Berechtigungen vergeben (in der Regel schreibgeschützt)
  • Starkes, eindeutiges Passwort verwenden (20+ Zeichen)
  • Passwort in sicherem Vault speichern (Azure Key Vault usw.)

Nicht empfehlenswert:

  • Administratorkonto verwenden
  • Persönliches Benutzerkonto verwenden
  • Das Konto mit anderen Anwendungen teilen
  • Unnötige AD-Berechtigungen vergeben
  • Passwort in Klartextkonfigurationsdateien speichern

Wenn Sie die Verzeichnissuche in RAMP aktivieren möchten (z. B. Benutzersuche für die Rollenzuweisung), konfigurieren Sie LDAP:

{
"Authentication": {
"Providers": {
"Windows": {
"Enabled": true,
"AutoProvision": true,
"Domain": "IHREDOMAIN.COM",
"Ldap": {
"Server": "ldap://dc.yourdomain.com:389",
"SearchBase": "DC=yourdomain,DC=com",
"ServiceAccount": {
"Username": "IHREDOMAIN\\ramp-service",
"Password": "[sicher gespeichert]"
}
}
}
}
}
}

Weitere Informationen zur LDAP-Konfiguration finden Sie unter LDAP-Einrichtungsanleitung.

Für Benutzer in mehreren AD-Gesamtstrukturen:

{
"Authentication": {
"Providers": {
"Windows": {
"Enabled": true,
"Domains": [
{
"Name": "CONTOSO.COM",
"Ldap": {
"Server": "ldap://dc1.contoso.com",
"SearchBase": "DC=contoso,DC=com"
}
},
{
"Name": "SUBSIDIARY.COM",
"Ldap": {
"Server": "ldap://dc1.subsidiary.com",
"SearchBase": "DC=subsidiary,DC=com"
}
}
]
}
}
}
}

Wenn ein Domain-Benutzer zum ersten Mal auf RAMP zugreift:

  1. IIS authentifiziert den Benutzer über Windows Authentication
  2. Die Identität des Benutzers wird an RAMP übergeben (z. B. IHREDOMAIN\john.doe)
  3. RAMP prüft, ob Benutzer mit IdentityProvider = "Windows" vorhanden ist
  4. Falls nicht, erstellt RAMP ein neues Benutzerkonto:
    • Benutzername: IHREDOMAIN\john.doe
    • E-Mail: Abgeleitet vom Benutzernamen (oder aus LDAP, wenn konfiguriert)
    • Anzeigename: Gleich wie Benutzername (oder aus LDAP, wenn konfiguriert)
    • IdentityProvider: Windows
  5. Benutzer ist jetzt angemeldet, hat aber standardmäßig keine Rollen
  6. Administrator muss Rollen manuell zuweisen (oder Bootstrap-Administratoren verwenden)

Alternative: Deployment auf Kestrel (Docker/Linux)

Abschnitt betitelt „Alternative: Deployment auf Kestrel (Docker/Linux)“

Windows Authentication erfordert in der Regel IIS auf Windows Server. Für Docker-Deployments:

Wenn Sie Windows Auth mit Kestrel verwenden müssen:

  • Auf Windows Server bereitstellen (nicht Linux)
  • Kestrel für Windows Auth konfigurieren (erweiterte Einrichtung)

Nach der Konfiguration der Windows Authentication: