Advertisement
Guest User

Untitled

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