Hi
ich erstelle gerade eine Intranet Seite, die im Backend ASP.NET core 3.1 web api verwendet und im frontend vue.js (SPA app). Die SPA App redet über REST API mit der api app.
Da wir uns im Intranet befinden, verwende ich das vorhandene Active Directory um Logins zu authentifizieren und zu authorisieren.
Wenn mich nicht alles täuscht, muss ich die AD authentifizierung selbst machen und kann mich nicht an standards bedienen wie "windows identity", da die SPA App nur aus HTML und Javascript besteht und deshalb nicht auf den aktuell angemeldeten Windows Benutzer zugreifen kann - richtig?
Die api app kann das natürlich, bringt aber nichts, da sie nur den service user ausgibt, der die api app laufen lässt..
Gruß
camelord
Die Backend-Authentifizierung (bzw. der User Store) spielt für die SPA nur eine untergeordnete Rolle.
Die SPA spricht mit einem JWT Token mit der API; in dem Token steht ja nicht nur die Authentifizierung sondern auch Authorisierung.
Siehe auch
Authentication and authorization for SPAs und Configure Windows Authentication in ASP.NET Core
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke für die schnelle Antwort!
Also Credentials in der SPA Frontend Seite eingeben lassen, diese an das api app Backend schicken, dort manuell authentifizieren/authorisieren und ein token erzeugen - ab diesem Zeitpunkt mit Token bei der Frontend und Backend Kommunikation arbeiten.
Korrekt?
Wenn Du das möchtest kannst Du das mit den Credentials durchaus so machen; ist aber im Intranet dank Kerberos Ticket (erfordert IIS) nicht unbedingt notwendig.
Du kannst problemlos via Integrated Security (also Active Directory) die Authentifzierung ohne Credentials ausführen, um den Token auszustellen.
Wichtig ist, dass der Token im SPA landet, sodass der Token dann für die API-Requests verwendet werden kann.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
OK, hört sich gut an..
Mir fehlt noch die Info, wie der Windows User, der über die SPA App kommen müsste, an das Backend (web api app) übertragen wird, sodass er im Backend authentifiziert und authorisiert werden kann?
Woher kennt die SPA (vue.js) App den windows user?
Von einer Server-Side App like ASP.NET oder NodeJS..
Die brauchste ja sowieso für die API / das Ausstellen der Token.
Hinzu kommt, dass eine SPA ja immer in einem Server Side Context gehostet werden sollte, sonst kannst die App ja gar nicht zentral (über Environment Vars) konfigurieren.
Und Configs im Quellcode haben ja nichts zu suchen 😃
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Woher kennt die SPA (vue.js) App den windows user?
Unter Angular reicht es, beim HttpClient die withCredentials-Eigenschaft auf true zu setzen. Dann werden die Credentials des aktuellen Benutzers an den Server weitergegeben. Wie das bei Vue funktioniert, weiß ich nicht.
Weeks of programming can save you hours of planning
Super!! Vielen Dank euch beiden..
Jetzt geht es mit Windows Credentials - kein Username mehr nötig - Single Sign-on in dem Fall.
Hallo,
Wie das bei Vue funktioniert, weiß ich nicht.
Im Grunde genau gleich, nur dass Vue.js von Haus aus kein HTTP-API dabei hat (damit es schlank bleibt). Wird aber z.B. axios verwendet, so gibt es dort die gleiche Einstellung withCredentials
.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"