Autenticação com gerenciamento de funções por meio do proxy reverso do Apache2

Autenticação com gerenciamento de funções por meio do proxy reverso do Apache2

Inicialmentepostado no SO, mas acho que pertence mais aqui. Sugestões, comentários e, idealmente, soluções serão bem-vindos! (aliás, vou deletar o SO Thread se estiver no lugar errado)

Preciso configurar um proxy reverso para fornecer acesso restrito de fora a um servidor interno. Aqui estão os principais requisitos:

  • Redirecionar solicitações dehttps://www.exemplo.compara ohttp://servidorinterno(feito)
  • Conte com um mecanismo de autenticação simples, mas comprovado. (atualmente trabalhando)
  • Gerencie funções de usuário adicionando alguns parâmetros GET ao URL. (mas como ?)
  • O servidor está hospedando um aplicativo Java. Ainda não tenho acesso a ele e o código do aplicativo não deve ser alterado. Isso não deveria importar.

Eu instalei e configureimod_proxye o redirecionamento funciona bem.
A autenticação está usando Apache2autenticação básica, o que deve ser suficiente em termos de segurança.

Agora, meu problema é o gerenciamento de funções. Preciso alterar as solicitações para que o usuário foo tenha privilégios de administrador, enquanto o usuário bar não. Deveria ser tão simples quanto definir um parâmetro GET como "&role=admin", mas não sei como fazer isso ao fazer proxy de solicitações.

As funções estão atualmente armazenadas em um banco de dados MySQL dedicado, portanto, para obter os privilégios, basta uma solicitação, feita facilmente em PHP. Meu problema é que não sei como manter o comportamento do proxy se eu chamar uma página php. Quero que cada solicitação tenha os parâmetros de função anexados, mas preciso manter o restante da solicitação inalterado.

Meu proxy atual faz tudo com a configuração do virtualhost (alias .htaccess), mas não tenho ideia de qual abordagem poderia funcionar. Não consigo fazer solicitações MySQL no VHost, e redirecionar para uma página php seria -até onde sei- "quebrar" o conceito de proxy, já que eu redirecionaria, mas provavelmente perderia "outros parâmetros de requisição", o que não está muito claro para mim, já que nunca usei proxies.

libapache2-mod-auth-mysqlpode ter sido uma solução, mas o mod parece descontinuado, então não pude nem tentar . Mod_authn_dbd poderia ser uma solução? Até agora, não consegui fazer login usando-o, mas não tenho certeza se isso poderia resolver minha necessidade de adicionar um parâmetro get, de qualquer maneira.

Estou ficando sem ideias.
Como eu poderia implementar o que preciso? Tenho certeza de que existe uma solução fácil para uma necessidade tão comum.

Responder1

A única coisa que vem à mente é escrever seu próprio proxy simples, por exemplo, em php/curl. O Apache servirá como um servidor web habilitado para php, e o php/curl fará proxy das solicitações e modificará os parâmetros GET, de acordo com o nome de usuário fornecido. Você pode até fazer autenticação habilitada para cookies, não apenas HTTP.

Você também pode tentar a mesma coisa usando nginx, autenticação HTTP e módulo lua nginx, mas isso é basicamente a mesma coisa, menos a necessidade de escrever proxy em lua - lua apenas decidirá se o usuário vale a função de administrador ou não, e o nginx fará proxy solicitações e modificar argumentos GET.

informação relacionada