2017-04-10 4 views
3

Ich möchte das Token aus meinem Anfrage-Header-Feld Autorisierung.Caching Token von Auth_request

Authorization : Bearer abcdefghijklmnopqrstuvwxyz

Mein Ziel ist es, dass ich nicht jede Anfrage über die Validierung-Server zu validieren. Wenn das Autorisierungs-Token zwischengespeichert (und gültig) ist, sollte die Anforderung die API ohne Validierung aufrufen.

location /main { 
      auth_request /auth; 
      proxy_ignore_headers Cache-Control; 
      proxy_pass http://API; 
      proxy_http_version 1.1; 

     } 


location /auth { 
      internal; 
      proxy_cache my_cache; 
      proxy_ignore_headers Cache-Control; 
      proxy_cache_key "$http_authorization"; 
      proxy_pass https://validationserver; 
      proxy_pass_request_body off; 
      proxy_set_header Content-Length ""; 

     } 

Dies ist mein Setup, aber das funktioniert nicht.

Ich hoffe, Sie können mir helfen.

Grüße!

Antwort

1

Setzt Ihr Validierungsserver einen Cookie? Wenn ja, brauchen Sie auch proxy_ignore_headers "Set-Cookie";

2

Welche Art von Authentifizierung versuchen Sie zu erreichen? Ist es ein standortweiter Authentifizierungsmechanismus, bei dem jeder authentifizierte Benutzer dieselben Berechtigungen für den Inhalt besitzt? Oder ist es subtiler, wo ein bestimmter Benutzer Zugang zu bestimmten Ressourcen hat oder nicht?

Wenn es Letzteres ist, dann öffnen Sie Ihre Anwendung effektiv für eine Sicherheitslücke - jeder authentifizierte Benutzer wäre in der Lage, sein Authentifizierungs-Token zu verwenden, um Aktionen auszuführen, zu denen sie berechtigt sind oder nicht. vermutlich würden alle Benutzernamen oder IDs, die als Parameter in der Abfrage übergeben werden, vollständig vertrauenswürdig sein, sofern das Token zum ersten Mal zwischengespeichert wurde, wenn der richtige Benutzername/ID in der ursprünglichen Autorisierungsanfrage, die validiert und zwischengespeichert wurde, angegeben wurde.


Alternativ beachten Sie, dass Caching wurde vor unterstützt 1.7.3 nginx, wie pro http://nginx.org/r/auth_request.


Beachten Sie auch, dass standardmäßig, das Vorhandensein von Cookies in der Anfrage oder Antwort wäre ebenfalls entgegen den Inhalt von mit http://nginx.org/r/proxy_cache zwischengespeichert werden. Gemäß http://serverfault.com/questions/462799/leverage-proxy-caching-with-nginx-by-removing-set-cookie-header/467774#467774 kann daher Folgendes erforderlich sein, damit die Zwischenspeicherung funktioniert:

proxy_hide_header  Set-Cookie; 
    proxy_ignore_headers Set-Cookie; 
    # important! Remember the special inheritance rules for proxy_set_header: 
    # http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_set_header 
    proxy_set_header  Cookie "";