保护并授权从nginx/nchan到身份验证服务器的GET请求

保护并授权从nginx/nchan到身份验证服务器的GET请求,nginx,nchan,Nginx,Nchan,我是Nginx和nchan的新手。 我有一个基于Nginx/nchan的pub-sub模型的典型用例,其中有多个订阅者和一个发布者。订阅者通过websocket wss API调用订阅Nchan服务器。 我想只允许授权节点订阅Nchan。我知道Nginx中有proxy_pass,我可以依靠外部身份验证服务器发送2xx来授权请求,但存在一个问题: 从Nginx/nchan到my auth server的GET请求本身需要经过身份验证/授权,以便不是每个人都可以调用该身份验证请求。或者这样说:出于安

我是Nginx和nchan的新手。 我有一个基于Nginx/nchan的pub-sub模型的典型用例,其中有多个订阅者和一个发布者。订阅者通过websocket wss API调用订阅Nchan服务器。 我想只允许授权节点订阅Nchan。我知道Nginx中有proxy_pass,我可以依靠外部身份验证服务器发送2xx来授权请求,但存在一个问题:

从Nginx/nchan到my auth server的GET请求本身需要经过身份验证/授权,以便不是每个人都可以调用该身份验证请求。或者这样说:出于安全考虑,我不能在我的auth服务器上公开一个开放的API


订阅请求可以有一个Auth令牌,可以由Auth服务器进行验证。在Nginx中是否有一种方法可以解析作为subscribe请求接收的请求并将其传递给auth server?

您可以使用lua脚本并使用类似的方法

location ~ "^/subscribe" {
    access_by_lua_block {
      //check headers/cookie for authorization token 
      //validate token
    }

    nchan_subscriber;
}
依赖外部授权服务。您可以使用lua代理请求

location ~ "^/sub" {
    access_by_lua_block {
      local res = ngx.location.capture(location, options)
      if res.status == ngx.HTTP_OK then
        return 
      end

      if res.status == ngx.HTTP_UNAUTHORIZED then
          ngx.exit(ngx.HTTP_UNAUTHORIZED)
          return
      end
    }

    nchan_subscriber;
}