2015-03-31 9 views
6

Io sono l'attuazione di un doppio senso SSL l'autenticazione e l'autenticazione poi aggiuntive tramite Kerberos dopo di che reindirizza l'utente a un server interno tramite proxy inverso.pitone utente tornado e di proxy inverso poi via apache

cioè:

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

Questa configurazione attualmente lavora:

Ora la mia idea è quella di utilizzare questa configurazione come posso controllare il comportamento degli utenti tramite Tornado

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

E ho ottenuto l'autenticazione SSL e il Ke rberos autenticazione di lavoro.

Tuttavia, come si comunica allo Tornado per invertire proxy(apache) nel server interno?

risposta

4

Tornado non ha alcun built-in funzionalità proxy inverso, ma nel caso semplice di un proxy inverso è solo un RequestHandler che passa attraverso ad un 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) 

Si potrebbe ottenere molto di più complicato di quello a seconda di quali sono le tue esigenze. Questa è solo una cosa semplice da costruire se si può essere sicuri che il proprio server interno non faccia nulla di complicato.