2017-04-10 10 views
3

リクエストヘッダーフィールドからトークンをキャッシュする必要があります。auth_requestからトークンをキャッシュする

Authorization : Bearer abcdefghijklmnopqrstuvwxyz

私の目標は、私は、検証、サーバー上のすべてのリクエストを検証する必要がないこと、です。承認トークンがキャッシュされている(有効である)場合、要求は検証なしでAPIを呼び出す必要があります。

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 ""; 

     } 

これは私の設定ですが、これは機能しません。

私があなたを助けてくれることを願っています。

おはようございます!

答えて

1

検証サーバーでCookieが設定されていますか?あなたも必要な場合proxy_ignore_headers "Set-Cookie";

2

どのような認証を達成しようとしていますか?サイト全体の認証メカニズムですか、認証されたすべてのユーザーがコンテンツと同じアクセス許可を持っていますか?または、特定のユーザーが特定のリソースへのアクセス権を持っている場合としていない場合があります。

これは後者の場合、アプリケーションをセキュリティ上の脆弱性に効果的に開放するため、認証されたユーザーは認証トークンを使用して、許可されているかどうか、おそらく、検証されてキャッシュされた元の許可要求に適切なユーザー名/ IDが提示されたときに、トークンが最初にキャッシュされていれば、クエリでパラメータとして渡されたユーザー名またはIDは完全に信頼されます。


また、そのキャッシュがhttp://nginx.org/r/auth_requestあたりとして、1.7.3をnginxのために前にサポートされていません注意してください。また


なお、デフォルトでは、要求または応答でクッキーの存在は、同様に、http://nginx.org/r/proxy_cacheでキャッシュされるからコンテンツを妨げます。 http://serverfault.com/questions/462799/leverage-proxy-caching-with-nginx-by-removing-set-cookie-header/467774#467774のように、キャッシングを機能させるには、次のようにする必要があります。

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 ""; 
関連する問題