Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Windows-Authentication in ASP.NET Core 2.x Kestrel Projekt
MorphieX
myCSharp.de - Member



Dabei seit:
Beiträge: 184
Herkunft: Rahden

Themenstarter:

Windows-Authentication in ASP.NET Core 2.x Kestrel Projekt

beantworten | zitieren | melden

Hi,

ich sitze gerade an einem ASP.NET Core 2.1-Projekt mit eigener (Cookie-)Authentifizierung.
Die Authentifizierung sieht so aus, dass die Zugangsdaten
- entweder komplett in der Anwendung verwaltet werden können (Benutzername + Passwort) und man sich entsprechend auch damit anmeldet,
- oder der Benutzer nur (mindestens) mit seinem AD-Accountnamen angelegt, und ein Haken "LDAP Authentifizierung" gesetzt wird. Nun prüft die Authentifizierung nicht gegen ein in der Datenbank eingetragenes Passwort, sondern gegen einen LDAP-Server.

Das funktioniert so schon perfekt.

Jetzt möchten wir optional beim LDAP-Login auch SSO anbieten.
Nun ist es ja so, dass ASP.NET Core mit Kestrel keine Windows-Authentifizierung unterstützt, sondern dies maximal vom IIS oder vom WebListener (HttpSys) unterstützt wird.

Der IIS fällt raus, da wir in der Anwendung auch noch andere Background-Tasks (dauerhafte Kommunikation mit externen Schnittstellen) ausführen müssen, und ich diese nicht im IIS-Prozess durchführen möchte.

WebListener wäre eine Alternative, allerdings unterstützt der WebListener scheinbar keine Cookie-Authentifizierung mehr, wenn Windows Authentifizierung aktiviert ist. (https://github.com/aspnet/HttpSysServer/issues/284)

Also muss ich irgendwie bei Kestrel bleiben, was mir eigentlich auch ganz recht ist, da plattformunabhängig.

Nun bin ich über folgenden Stack-Overflow-Eintrag gestoßen:
https://stackoverflow.com/questions/34956808/asp-net-vnext-kestrel-windows-authentication
In der Lösung wurde ein ActionFilter gebaut, der eine NTLM-Authentifizierung simuliert. Simuliert deswegen, weil die Credentials nicht gegen einen LDAP-Server validiert werden, sondern nur der Username und Domain aus der NTLM-Authentifizierung herausgelesen werden.
Eigentlich genau das, was ich brauche, und es funktioniert auch wunderbar. Nur sehe ich hier eine große Sicherheitslücke.

Daher kann dieser Thread in min. zwei Richtungen verlaufen:
1. gibt es Alternativen ein SSO mit Kestrel durchzuführen?
2. hat schon jemand Erfahrungen, wie man die NTLM-Authentifizierung vollständig implementiert?

Btw. als LDAP-Library verwende ich Novell.Directory.Ldap.NETStandard2_0
private Nachricht | Beiträge des Benutzers
MorphieX
myCSharp.de - Member



Dabei seit:
Beiträge: 184
Herkunft: Rahden

Themenstarter:

beantworten | zitieren | melden

So, ich komme langsam zu dem Ergebnis, dass es gar nicht (so einfach) möglich ist.

NTLM über einen LDAP-Client ist nicht möglich, da man (zumindest beim Active Directory) keine Möglichkeit hat auf das gehashte Passwort des Benutzers zuzugreifen.
Windows selbst löst das wohl über die Secur32.dll, die es aber natürlich nur unter Windows gibt. Da hat man - wenn man plattformabhängig bleiben will - also keine Möglichkeit diese zu nutzen. Außer man implementiert die Funktionalität der Secur32.dll per reverse engineering selbst - nein, lieber nicht ;-)

Möglicherweise brauche ich eine eigene Anwendung, die sich nur um das SSO kümmert und unter Windows gehostet werden muss. Hat da jemand Erfahrungen?
private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 386
Herkunft: Kassel

beantworten | zitieren | melden

Steht dir auch das Azure AD zur Verfügung?
Falls ja würde ich über OIDC gehen und vielleicht sogar die Accountverwaltung durch IdentityServer4 machen lassen, da bekommst du das schon fertig und musst dich in deiner Anwendung nicht mehr darum kümmern.
private Nachricht | Beiträge des Benutzers
MorphieX
myCSharp.de - Member



Dabei seit:
Beiträge: 184
Herkunft: Rahden

Themenstarter:

beantworten | zitieren | melden

Ist leider eine Anwendung die später an ganz unterschiedliche Kunden mit unterschiedlichen Umgebungen verkauft werden soll.
Aber ich schaue mir das auf jeden Fall noch mal an, danke :-)
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Das würde erst recht für IdentityServer4 sprechen :).

LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers