Proxy reverso e segurança do servidor de aplicativos Java

1

É possível que o proxy reverso (Apache HTTP 2.2) manipule a autenticação (HTTP Basic) e ainda use a segurança gerenciada pelo contêiner do servidor de aplicativos Java (GlassFish 3.1 ou JBoss 7.0.2) para autorização?

Eu tenho o GlassFish fazendo segurança gerenciada por contêiner (autenticação e autorização juntas) muito bem usando a segurança de contêineres declarativa e programática com autenticação baseada em formulário e um módulo de autenticação GlassFish personalizado. Eu ainda tenho esse trabalho através de um proxy reverso do servidor web Apache HTTP usando mod_proxy_ajp. Agora, estou apenas tentando encontrar uma maneira de transferir a parte de autenticação para o Apache, mantendo a peça de autorização de segurança gerenciada por contêiner. Talvez exista uma interface de logon único no servidor de aplicativos Java que facilitaria isso (já que isso é como o SSO - o Apache requer autenticação para tudo que está por trás dele)?

    
por Ryan 18.01.2012 / 20:51

1 resposta

1

Os dados do usuário estão disponíveis para CGIs e como variáveis de ambiente. Você teria que passar isso de alguma forma - seja através de algum gateway cgi, ou talvez inserindo-os em um cabeçalho.

Abaixo está um exemplo de como pode ser possível através da inserção do cabeçalho. Peço desculpas por sugerir algo que não tentei, mas parece razoável, sim?

RequestHeader unset REMOTE-USER
RequestHeader add REMOTE-USER %{REMOTE-USER}e

Eu suspeito, no entanto, que quando essa variável de ambiente for, ela sempre será nula se você estiver fazendo proxy. Se for esse o caso, você poderá usar variáveis de look-ahead usando mod_rewrite. (Veja os documentos do mod_rewrite para exemplos e explicações de LA-U.)

RequestHeader unset REMOTE-USER
RewriteCond %{LA-U:REMOTE_USER} (.*)
RewriteRule .* - [E=MY_REMOTE_USER:%1]
RequestHeader add REMOTE-USER %{MY_REMOTE_USER}e

Isso requer mod_rewrite e mod_headers.

    
por 18.01.2012 / 21:33