Autenticar o NTLM no proxy reverso na frente dos servidores da Web não autenticados

1

Eu tenho vários servidores Linux Linux configurados sem a necessidade de autenticação para acessar o conteúdo da web. Gostaria que meus usuários do Windows pudessem acessar esses sites com autenticação de passagem.

Eu não quero ter que tentar configurá-lo em todos os servidores web. Minha idéia é que eu poderia NTLM autenticá-los em um proxy reverso e, em seguida, o proxy poderia fazer o pedido não autenticado e os servidores da web só aceitariam conexões do referido proxy reverso. Idealmente, eu seria capaz de restringir o acesso a determinados sites / URLs com base no grupo AD de usuários, mas isso não é um requisito.

A maioria dos exemplos / tutoriais que eu encontrei na pesquisa são sobre o proxy das credenciais até o servidor web de destino, mas eu quero que o proxy faça a autenticação em si. Eu estou bem com a execução do proxy no Windows, se eu precisar. O que é mais fácil de configurar é o que estou procurando.

    
por getsauce 19.07.2018 / 18:45

1 resposta

0

Acabei com duas soluções viáveis para esse problema. Espero que isso seja útil para qualquer um que tente configurar algo semelhante.

  1. Configure o IIS com ARR (Application Request Routing) e ative a autenticação do Windows globalmente. Em seguida, configure uma regra de autorização global para permitir qualquer usuário que você deseje autenticar por meio do proxy reverso. As desvantagens desse método são que você não pode facilmente definir permissões diferentes para sites diferentes se estiver fazendo proxy de mais de um. Você pode especificar um "caminho de localização" em uma regra de autorização de URL, mas não pode dizer que servidor1 permita que esses usuários servidor2 permitam esses usuários.

  2. A opção que escolhi para usar foi executar o Apache 2.4 com um plugin NTLM mais recente que encontrei no Github ( link ) . Eu não encontrei nenhuma desvantagem usando esse método. Config abaixo.

    <VirtualHost *:*>
      ProxyPass / http://server1/
      ProxyPassReverse / http://server1
    
      ServerName proxy1
    
      <Location /* >
        AuthType SSPI
        NTLMAuth On
        NTLMAuthoritative On
        NTLMOfferBasic On
        <RequireAny>
          Require sspi-user contoso\johnsmith
        </RequireAny>
      </Location>
    </VirtualHost>
    
    <VirtualHost *:*>
      ProxyPass / http://server2/
      ProxyPassReverse / http://server2
    
      ServerName proxy2
    
      <Location /* >
        AuthType SSPI
        NTLMAuth On
        NTLMAuthoritative On
        NTLMOfferBasic On
        <RequireAny>
          Require sspi-group "contoso\Domain Users"
        </RequireAny>
      </Location>
    </VirtualHost>
    
por 23.07.2018 / 22:08