我正在实施双向 SSL 身份验证,然后通过 Kerberos 进行其他身份验证,然后通过反向代理将用户重定向到内部服务器。
即:
SSL auth <--> Apache Server + kerberos auth using login/password <--reverse proxy-->> internal server
此设置目前有效:
现在我的想法是使用此配置,因为我可以通过Tornado控制用户的行为
SSL auth <--> Apache server <---> Tornado webserver for kerberos auth <---> reverse proxy <---> internal server
我已经获得了SSL身份验证和 Kerberos 身份验证。
但是,如何告诉 Tornado 将proxy(apache)
转发到内部服务器?
答案 0 :(得分:6)
Tornado没有任何内置的反向代理功能,但在简单的情况下,反向代理只是一个传递给HTTP客户端的RequestHandler:
class ReverseProxyHandler(RequestHandler):
@gen.coroutine
def get(self):
resp = AsyncHTTPClient().fetch(self.convert_url(self.request),
headers=self.request.headers)
self.set_status(resp.code)
for k,v in resp.headers.get_all():
self.add_header(k, v)
self.write(resp.body)
根据您的要求,它可能会变得复杂得多。如果你可以确定你的内部服务器没有做任何棘手的事情,那么这只是一件简单的事情。