2015-03-31 14 views
6

Tôi đang thực hiện một hai chiều SSL xác thực và xác thực sau đó thêm qua Kerberos sau đó nó chuyển hướng người dùng đến một máy chủ nội bộ thông qua proxy ngược lại.python xác thực người dùng lốc xoáy và proxy sau đó ngược qua apache

ví dụ:

SSL auth <--> Apache Server + kerberos auth using login/password <--reverse proxy-->> internal server 

Thiết lập này hiện đang hoạt động:

Bây giờ ý tưởng của tôi là sử dụng cấu hình này như tôi có thể kiểm soát hành vi của người sử dụng thông qua Tornado

SSL auth <--> Apache server <---> Tornado webserver for kerberos auth <---> reverse proxy <---> internal server 

Và tôi đã nhận được xác thực SSL và Ke rberos xác thực hoạt động.

Tuy nhiên, làm cách nào để nói Tornado để đảo ngược proxy(apache) với máy chủ nội bộ?

Trả lời

4

Tornado không có bất kỳ built-in chức năng reverse proxy, nhưng trong trường hợp đơn giản một reverse proxy chỉ là một RequestHandler đó đi qua một client HTTP:

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) 

Nó có thể nhận được nhiều hơn nữa phức tạp hơn tùy thuộc vào yêu cầu của bạn. Đây chỉ là một điều đơn giản để xây dựng nếu bạn có thể chắc chắn rằng máy chủ nội bộ của bạn không làm bất cứ điều gì phức tạp.

Các vấn đề liên quan