从auth_requestcaching令牌

我想从我的请求头字段授权caching令牌。

Authorization : Bearer abcdefghijklmnopqrstuvwxyz

我的目标是,我不必validationvalidation服务器上的每个请求。 如果授权令牌被caching(并且有效),则请求应该在没有validation的情况下调用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 ""; } 

这是我的设置,但这不起作用。

我希望你能帮助我。

问候!

你想完成什么样的认证? 它是一个站点范围的身份验证机制,每个经过身份验证的用户对内容拥有相同的权限? 或者更微妙的是,给定的用户可以访问或不访问特定的资源?

因为如果是后者,那么你就有效地将你的应用程序开放到一个安全漏洞 – 任何经过身份验证的用户都将能够使用他们的身份验证令牌来执行他们可能或不可能获得的操作,可能是任何用户名或作为查询中参数传递的ID将被完全信任,只要当正确的用户名/ ID出现在经过验证和缓存的原始授权请求中时,令牌被首先缓存。


或者,请注意,根据http://nginx.org/r/auth_request,nginx 1.7.3之前不支持缓存。


另外,请注意,默认情况下,请求或响应中存在的cookie同样会阻止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 ""; 

你的验证服务器是否设置了一个cookie? 如果是这样,你还需要proxy_ignore_headers "Set-Cookie";