python tornado用户身份验证,然后通过apache反向代理

时间:2015-03-31 16:23:01

标签: python linux apache tornado kerberos

我正在实施双向 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)转发到内部服务器?

1 个答案:

答案 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)

根据您的要求,它可能会变得复杂得多。如果你可以确定你的内部服务器没有做任何棘手的事情,那么这只是一件简单的事情。