【问题标题】:Secure and authorize GET request request from nginx/nchan to auth server保护和授权从 nginx/nchan 到身份验证服务器的 GET 请求请求
【发布时间】:2020-06-02 02:54:03
【问题描述】:

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

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

订阅请求可以有一个身份验证令牌,可以由身份验证服务器验证。 Nginx 中是否有一种方法可以将接收到的请求解析为订阅请求并将其传递给身份验证服务器?

【问题讨论】:

    标签: nginx nchan


    【解决方案1】:

    您可以使用 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-22
      • 2023-03-24
      • 1970-01-01
      • 2020-08-11
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      相关资源
      最近更新 更多