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