[HTTP, GET, Servlet] Programmatische Authentifizierung via Header akzeptabel?

T

Tersus

Gast
Mahlzeit,

darf ich den Header für HTTP-GET Anfragen ohne Bedenken zu meinen eigenen Wünschen "misshandeln"?

Szenario:
  1. Ich biete ein und die selbe Ressource-URL mehreren Klienten zum Anfragen bereit.
  2. Jeder Klient gibt in den Header über das Feld "authorization" seinen Nutzernamen und Passwort an.
  3. Der Servlet, der den Request bearbeitet, muss nun anhand der Information im Header-Feld "authorization" entscheiden, wie der Request beantwortet wird.

Konkretes lächerliches Beispiel:

Code:
Request-URL: /.../Bohrmaschinen
Liefert alle Bohrmaschinen.
Aber Lehrlingen sollen z. B. die großen Bohrhammer nicht aufgelistet werden. Anhand des im Header-Feld "authorization" angegebenen Nutzernamens kann man dessen Rolle ermitteln und die Auflistung beschränken.

Ist das so legitim oder sehr "dirty"?

Grüße

* Wenn die Verbindung zwischen Server und Klient TLS verschlüsselt ist, ist der Header ja mit gesichert.
 
Das wird oft gemacht, ich würde aber Tokens nehmen und mich an Oauth orientieren: https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2

Das hat einfach den Vorteil, dass ich auf der einen Seite nicht mein Account Passwort für eine Schnittstelle verwenden muss und auf der anderen Seite die Schlüssel per Click leichter und schneller ändere wenn ich gehackt werde als mein Passwort.

Wird so auch quasi bei allen Webservices gemacht (Paypal, Pushbullet, Mailgun, Mailchimp, Facebook, Twitter .....). Die Umsetzung ist dank fertig Bibliotheken für alle gängigen Sprachen und Frameworks auch nicht sonderlich kompliziert:

https://django-oauth-toolkit.readthedocs.io/en/latest/
https://github.com/FriendsOfSymfony/FOSOAuthServerBundle
https://github.com/angularjs-oauth/oauth-ng
https://projects.spring.io/spring-security-oauth/
 
Zuletzt bearbeitet:
Ich bin verwirrt. Ist das statuslos?

abstract_flow.png

Woher weiß der Authorization Server, dass der Authorization Grant vom Client stimmt?
Woher weiß der Resource Server, dass der Access Token gültig ist?
Werden hier drei Requests durchgeführt? Ist das schlimm, wenn der Load Balancer die drei Requests an unterschiedliche Server Instanzen schickt?
 
regulaere requests sind lediglich die letzten zwei pfeile. das darueber dient nur dazu, einen geheimen token einmalig zu erstellen, der als account- sowie applikationsbasierter login fungiert. man spricht von der authorisierung einer applikation. besagte tokens werden auf seite des servers verwaltet und validitaet muss somit geprueft werden.
 
Zurück
Oben