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