小编Bac*_*ash的帖子

传递来自 auth_request 的标头

我有一个授权模块,每当向私有端点发出请求时都会调用该模块。

该模块从Authorization标头中解析令牌,并且:

  1. 如果无效,则返回 401
  2. 如果有效,则返回 200
  3. 如果它有效但即将在 X 分钟后到期,它会生成一个新令牌并在Authorization标头中返回该令牌。

“profile”是私有端点之一,它的配置方式如下:

location /profile {
  auth_request /jwtverify;

  auth_request_set  $authorization $upstream_http_authorization;
  proxy_set_header  authorization $authorization;
  proxy_pass        http://private-profile:80;
}
Run Code Online (Sandbox Code Playgroud)

jwtverify 是这样配置的:

location = /jwtverify {
  internal;
  proxy_pass              http://auth-module:8080/auth/verify;
  proxy_pass_request_body off;
  proxy_set_header        Content-Length "";
  proxy_set_header        X-Original-URI $request_uri;
  auth_request_set        $http_authorization $upstream_http_authorization;
}
Run Code Online (Sandbox Code Playgroud)

现在,除了要求号外,一切正常。3:如果auth模块设置了Authorizationheader,客户端永远不会收到它。

流程应该是这样的:

  • 客户端发出请求
  • auth-module 拦截请求,如果有效,代理将其传递给私有服务
  • 发送响应时,auth-module应保留由 设置的标头并发送给客户端

我想我没有正确理解如何组合auth_request_set, proxy_set_header, auth_request_set,也可能是它们不适合这种情况。

有没有办法在 NGINX 中实现这一点?

nginx

7
推荐指数
2
解决办法
7695
查看次数

标签 统计

nginx ×1