Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Welcher Status Code sollte zurückgegeben werden bei fehlendem oder fehlerhaftem HTTP Header?
- Bei fehlendem oder fehlerhaftem HTTP Header bietet es sich an, den Request mit einem Fehlercode 401 zurückzuweisen.
- Dieser Code steht für "Unauthorized" und signalisiert dem Client, dass die Autorisierung fehlgeschlagen ist.
- Zusützlich kann im "WWW-Authenticate"-Header-Feld der Antwort dem Client mitgeteilt werden,
- wie die Authentifizierung durchgeführt werden soll.
- Situationen Trigger:
- Vorräte nach dem Verringern noch positiv -> Mahlzeit bleibt vorrätig
- Vorräte gehen nach dem Verringern auf 0 -> Mahlzeit nicht mehr vorrätig
- Vorräte würden nach dem Verringern negativ werden -> Fehler aufgrund von Constaint -> Transaction Rollback
- Gibt es andere HTTP Header, die für eine Authorisierung bereits vorgesehen sind?
- Es gibt die Basic Authentication, bei der man einen in Base64 codierten String angibt,
- der decodiert den Benutzernamen und das Passwort in der Form "Benutzername:Passwort" darstellt.
- Das Passwort ist damit codiert, allerdings nicht verschlüsselt.
- Welche Möglichkeiten sind besser geeignet, Anfragen von anderen Diensten zu authentifizieren, als per festgelegtem HTTP Header?
- Es können Token oder Signaturen verwendet werden, z.B. JSON Web Token oder OAuth.
- JSON Web Token:
- Ein JWT besteht aus dem Header, der Payload und der Signatur.
- Header und Payload sind beides JSON-Elemente. Der Header enthält den Medientypen, der standardmäßig "JWT" ist,
- und den Verschlüsselungsalgorithmus, der angewendet werden soll.
- Die Payload enthält die Claims und gibt damit unter anderem Informationen über den Benutzer an.
- Dabei gibt es drei Typen von Claims:
- Registered Claims: vordefinierte Claims, die empfohlen sind, aber nicht enthalten sein müssen
- Public Claims: können frei gewählt werden, sollten keine Kollisionen verursachen
- Private Claims: Claims, auf die sich beide Parteien geeinigt haben, um Informationen zu teilen
- Die Signatur entsteht, indem man den Header und die Payload in Base64 codiert,
- mit einem Punkt trennt und das Resultat dann mit einer Hashmethode hasht.
- Für die Codierung werden der Header und die Payload wie bei der Signatur codiert und zusammengehänkt.
- Anstatt dies dann zu hashen, wird der vorher erstellte Hash ebenfalls codiert und mit einem Punkt zur Trennung angehängt.
- OAuth2:
- OAuth ermöglicht eine standardisierte und sichere API-Autorisierung.
- Dabei sendet der Client zuerst eine Autorisierungsanfrage an den Ressource Owner und erhält daraufhin eine Autorisierungsgenehmigung zurück.
- Als nächstes sendet der Client diese Autorisierungsgenehmigung an einen Authorization Server. Dieser sendet daraufhin einen Access Token zurück.
- Zuletzt sendet der Client diesen Access Token an einen Ressource Server und erhält daraufhin die geschützen Daten.
- Aufruf JWT:
- Signatur:
- var signature = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret);
- Codierung:
- var jwt = base64(header) + "." + base64(payload) + "." + base64(signature);
- Beispielaufruf OAuth2, Provider Google:
- https://accounts.google.com/o/oauth2/v2/auth
- ?client_id=139281538940-arh29cscgqk2vic01ackiphugqe6m2lr.apps.googleusercontent.com (erhält Nutzer nach Registrierung bei Oauth Provider)
- &response_type=code
- &scope=openid%20email
- &redirect_uri=http%3A%2F%2F256stuff.com%2Fgray%2Fdocs%2Foauth2.0%2FcomeBack.cgi (Weiterleitungs-URI)
- &state=this-should-be-some-generated-secret-token
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement