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 identity bei ASP.NET core 3.1 web api app und vue.js SPA
camelord
myCSharp.de - Member

Avatar #avatar-2671.jpg


Dabei seit:
Beiträge: 256
Herkunft: Ravensburg

Themenstarter:

windows identity bei ASP.NET core 3.1 web api app und vue.js SPA

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.752

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
camelord
myCSharp.de - Member

Avatar #avatar-2671.jpg


Dabei seit:
Beiträge: 256
Herkunft: Ravensburg

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.752

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
camelord
myCSharp.de - Member

Avatar #avatar-2671.jpg


Dabei seit:
Beiträge: 256
Herkunft: Ravensburg

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.752

beantworten | zitieren | melden

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 :-)
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat von camelord
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
private Nachricht | Beiträge des Benutzers
camelord
myCSharp.de - Member

Avatar #avatar-2671.jpg


Dabei seit:
Beiträge: 256
Herkunft: Ravensburg

Themenstarter:

beantworten | zitieren | melden

Super!! Vielen Dank euch beiden..
Jetzt geht es mit Windows Credentials - kein Username mehr nötig - Single Sign-on in dem Fall.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.813
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,
Zitat
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!"
private Nachricht | Beiträge des Benutzers
camelord
myCSharp.de - Member

Avatar #avatar-2671.jpg


Dabei seit:
Beiträge: 256
Herkunft: Ravensburg

Themenstarter:

beantworten | zitieren | melden

Genau - mit Axios hab ichs auch gemacht..
private Nachricht | Beiträge des Benutzers