Como configurar o Tomcat WebApp para aceitar credenciais do Apache

1

Estou tentando obter um aplicativo da web, executado no Tomcat 6, para autorizar um usuário que foi autenticado pelo Apache.

Eu configurei o Apache 2.4 para usar o Active Directory para autenticação do usuário (usando um módulo do Centrify) e solicitações ProxyPass / ProxyPassReverse para o Tomcat.

Agora estou tentando descobrir como usar essas credenciais em um aplicativo. Tomando o aplicativo gerenciador do Tomcat 6 como exemplo, como faço para alterá-lo para reconhecer o usuário autenticado e verificar se há uma função adequada?

Estou assumindo que tenho que mudar o Reino em server.xml, provavelmente para JNDIRealm ou JAASRealm, no entanto, a documentação fala sobre um reino sendo 'um' banco de dados 'ou nomes de usuários e senhas'. Esse é o caminho certo a seguir?

Também estou assumindo que preciso alterar login-config no web.xml, embora não tenha idéia de quais valores usar ainda.

Se alguém pudesse me orientar na direção certa ou sugerir outros caminhos para explorar, eu apreciaria isso.

BTW, também estou tentando autenticar o usuário diretamente no Tomcat, mas foi solicitado que ele consultasse a rota do proxy Apache para preferência.

    
por Sarah Phillips 19.10.2015 / 12:38

2 respostas

1

Suponho que você esteja usando o conector AJP.

Deve ser o suficiente para definir tomcatAuthentication="false" na sub-rotina do Conector AJP e, em seguida, o principal do usuário do apache será encaminhado para o tomcat6.

De acordo com a documentação , o usuário será sem função, o que pode surgir algum problema dependendo da aplicação.

tomcatAuthentication: If set to true, the authentication will be done in Tomcat. Otherwise, the authenticated principal will be propagated from the native webserver and used for authorization in Tomcat. Note that this principal will have no roles associated with it. The default value is true.

    
por 19.10.2015 / 14:01
1

Não é possível combinar a autorização da base de funções do Tomcat com a autenticação feita no Apache.

Ou você faz tudo em tomcat (autenticação e autorização) ou - muito mais sensato - estágio de autorização em seu webapp levando em conta informações que você encontra em variáveis de servidor (enviadas do apache para o tomcat).

Neste último cenário, você pula todas as partes de segurança do tomcat e se concentra em:

  1. envia variáveis de env do apache ( setenv diretivas, para coletar, por exemplo, associações a grupos);
  2. colete-os em sua webapp.
por 28.10.2015 / 09:46