wie node.js APIs absichern mit Microsoft Konto (Auth0) ohne Frontend?

Gast #6773191
Lesenswert?

Hallo,

Ich habe nun dieses Tutorial schon recht gut durchgearbeitet und 
verstanden:

https://bezkoder.com/node-js-rest-api-express-mysql/

Was mich als nächstes interessiert: Wenn man so eine API zur Verfügung 
stellt, dann hat die ja evtl. eine Beschreibung (OpenAPI/Swagger), aber 
kein Frontend (im Beispiel wird Postman zum Testen verwendet).

Nun würde ich die API-Funktionen gerne so absichern, dass man sie nur 
aufrufen kann, wenn man sich vorher mit einem Microsoft-Konto 
authentifiziert hat (OAuth0?)

Wie macht man das / wie stellt man das zur Verfügung? Normalerweise 
würde ja ein Frontend die Seite aufrufen und ein Sesson-Coockie 
speichern, dann würde umgeleitet zu Microsoft zum Anmelden usw.. Aber 
wenn die API kein Frontend hat..?

Und wie testet man das dann? auch mit Postman?
Gast #6773442
Lesenswert?

Ok, ich habe gelesen, ich glaube auch das Prinzip verstanden.

Was ich erreichen will ist "single sign on" (sso): "Die API kann 
aufgerufen werden, wenn der Benutzer schon mit einem Microsoft-Konto 
angemeldet ist."

Der Client "beweist" das, indem er ein Access Token von der letzten 
gültigen Anmeldung überreicht, und die API müsste dann bei Microsoft 
testen, ob es gültig ist.

Stimmt das erstmal?

Dann habe ich gelesen (oder meine es so verstanden zu haben), dass man 
die API dafür bei Microsoft registrieren muss (sonst könnte ja jeder 
kommen und eine Identität überprüfen wollen) - stimmt das? Und wenn ja - 
woran erkennt MS denn meine API?
#6773471
Lesenswert?

Sorry, im Detail wird dir jemand anderes weiterhelfen müssen, hab noch 
nie irgendeinen Dienst gegen Microsoft authentifizieren lassen.

Aber im Prinzip: GUI-Anwendung/Webseite mit aktivem Nutzer-Login fordert 
(über MS) ein spezielles Access-Token für deine Anwendung an.

Mit diesem Token kann die GUI dann deine API nutzen. Und ggfs. das Token 
auch speichern und ohne dass der User präsent ist weiternutzen.

Das kann dann z.B. über signierte JWT funktionieren.
Vorteil: Deine API kann nur durch Auswerten des JWT, ohne Kommunikation 
zu Microsoft (oder einem anderen Auth-Anbieter) entscheiden, ob der 
Request OK ist.
#6775302
Lesenswert?

> Dann habe ich gelesen (oder meine es so verstanden zu haben), dass man
die API dafür bei Microsoft registrieren muss (sonst könnte ja jeder
kommen und eine Identität überprüfen wollen) - stimmt das? Und wenn ja -
woran erkennt MS denn meine API?

Ohne jetzt das jemals gemacht zu haben... du hast eine Kundennummer bei 
MS, oder dem betreffenden Dienst, und ein Login mit Passwort oder so. 
Damit nimmst du dann mit deren Server Kontakt auf. Und in einem 
Interaktiven Verfahren wird dann verifiziert, dass dein App auch die 
richtige ist. Alles verschluesselt mit SSL oder so. Und so auch 
abgesichert gegen Replay Attacken. Je nachdem, was dieser Dienst MS oder 
aehnlich bringt, musst du dann auch zahlen, pro Zugriff.

Allenfalls solltest du dir die Datenschutzrichtlinien nochmals 
reinziehen. Du verrätst mit einer solchen Identifizierung, Daten ueber 
die zu identifizierende Person an ein amerikanisches Unternehmen
Gast #6780469
Lesenswert?

So, wieder etwas Zeit für's Hobby gehabt- Ich habe dieses Tutorial 
gefunden, was ich so langsam recht gut nachvollziehen kann (Es 
funktioniert auch). Nur diese eine Zeile (bisher) nicht, und ich glaube, 
das ist ein Fehler im Tutorial, oder?

https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-auth-code

und zwar in der server.js diese Zeile:
1
// Set the front-end folder to serve public assets.
2
app.use("/lib", express.static(path.join(__dirname, "../../lib/msal-browser/lib")));

Wo soll definiert sein, was 2 Ordnerebenen über meinen Arbeitsordner 
gespeichert ist? oder habe ich das falsch interpretiert?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren