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?
OAuth verwendest du am Frontend. Das kann dann an den Dienst, der auf deine API zugreifen soll, "Access token" weiterreichen. Die API überprüft dann die Access token. Starte vielleicht mal hier, um grob einen Überblick zu bekommen: https://de.wikipedia.org/wiki/OAuth
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?
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.
> 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
:
Bearbeitet durch User
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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.