Autenticação básica do Apache com o Tomcat

3

Eu tenho a seguinte configuração de servidor:

  • Apache Tomcat 7 executando o Jira da Atlassian ( http:// <server-ip>:8081/tickets )
  • Servidor Web Apache 2.4 como proxy reverso atendendo somente o aplicativo jira no momento, mas há mais para vir ( http://<server-ip>/tickets )

Agora, desejo restringir os acessos a todo o sistema (por exemplo, http://<server-ip>/* ) configurando uma autenticação básica.

Esta é a aparência da única configuração de site do apache:

<VirtualHost *:80>
        <Proxy *>
            Require all granted
        </Proxy>

        ProxyRequests           Off
        ProxyPreserveHost       On

        ProxyPass                /tickets       http://localhost:8081/tickets
        ProxyPassReverse         /tickets       http://localhost:8081/tickets

        <Location />
                AllowOverride AuthConfig
                AuthType Basic
                AuthName "Restricted Content"
                AuthUserFile /etc/apache2/.htpasswd
                Require user myuser
        </Location>
</VirtualHost>

Mas com essa configuração, encontro um problema ao tentar efetuar login. Depois de inserir os dados de login, a janela de login aparece novamente pedindo o login. Após três tentativas, um erro 401 é retornado pelo tomcat! aplicação e não apache.

Não há entrada nem no access.log nem no apache.log do apache para este pedido. Embora o apache registre solicitações com credenciais erradas.

Como posso configurar o Apache para fazer proxy de todas as solicitações de /tickets/* para o Tomcat enquanto forço o cliente a autenticar ao acessar /* ?

    
por twenty7 23.11.2015 / 16:16

2 respostas

1

Suspeitei que recebi um erro 401 do aplicativo tomcat. parece que o apache enviou o pedido de autorização, embora não devesse. Eu tive que remover o parâmetro "Authorization" do cabeçalho da solicitação.

Para fazer isso. Eu habilitei mod_headers e adicionei RequestHeader unset "Authorization" antes das diretivas ProxyPass.

Então, minha configuração parece com o seguinte agora:

<VirtualHost *:80>

        ProxyRequests           Off
        ProxyPreserveHost       On

        RequestHeader unset "Authorization"       

        &ltLocation "/tickets/rest/"&gt
                  Satisfy Any
                  Order allow,deny
                  Allow from all
        &lt/Location&gt

        <Location />
                AuthType Basic
                AuthName "Restricted Content"
                AuthUserFile /etc/apache2/.htpasswd
                Require user myuser
        </Location>

        ProxyPass                /tickets       http://localhost:8081/tickets
        ProxyPassReverse         /tickets       http://localhost:8081/tickets

</VirtualHost>

EDITAR:

O Jira usa sua própria API REST para os gadgets, então eu tive que definir uma Location-Tag para /tickets/rest path.

  • removeu a tag de proxy
  • adicionou o Location-Tag para a API jira-rest

Tenha ideias para resolver o problema de:

por 24.11.2015 / 10:03
0

Você precisa substituir Require user myuser por Require valid-user

e remova

    <Proxy *>
        Require all granted
    </Proxy>
    
por 23.11.2015 / 16:51