Estou configurando um SSO para usuários do Active Directory através de um site que é executado em um Apache (Apache2 no SLES 11.1) e, ao testar com o Firefox, tudo funciona bem. Mas quando tento abrir o site no Internet Explorer 8 (Windows 7), tudo o que recebo é
"Pedido ruim
Seu navegador enviou uma solicitação que este servidor não conseguiu entender.
O tamanho de um campo de cabeçalho de solicitação excede o limite do servidor.
Autorização: negociar [cadeia ultra longa] "
Meu vhost.cfg fica assim:
<VirtualHost hostname:443>
LimitRequestFieldSize 32760
LimitRequestLine 32760
LogLevel debug
<Directory "/data/pwtool/sec-data/adbauth">
AuthName "Please login with your AD-credentials (Windows Account)"
AuthType Kerberos
KrbMethodNegotiate on
KrbAuthRealms REALM.TLD
KrbServiceName HTTP/hostname
Krb5Keytab /data/pwtool/conf/http_hostname.krb5.keytab
KrbMethodK5Passwd on
KrbLocalUserMapping on
Order allow,deny
Allow from all
</Directory>
<Directory "/data/pwtool/sec-data/adbauth">
Require valid-user
</Directory>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl.crt/hostname-server.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/hostname-server.key
</VirtualHost>
Também verifiquei se os cookies foram excluídos e tentei vários valores menores para LimitRequestFieldSize e LimitRequestLine.
Outra coisa que me parece estranha é que, mesmo com a depuração do LogLevel, não recebo nenhum registro sobre isso. A última linha do log é
ssl_engine_kernel.c(1879): OpenSSL: Write: SSL negotiation finished successfully
Alguém tem uma idéia sobre isso?
Respostas:
Meu intestino diz que você tem um token de segurança muito grande, possivelmente porque o usuário é membro de um grande número de grupos. A implementação do AD Kerberos fornecerá ao Apache um PAC ( Privilege Attribute Certificate ) por padrão. Essa estrutura pode ser grande se o usuário for membro de um número significativo de grupos. Você pode usar a
tokensz.exe
ferramenta para ver o tamanho do token do usuário.Se esse for o problema, você pode modificar o atributo UserAccountControl da conta do usuário para impedir que o PAC seja enviado.
Você poderá modificar seu
/etc/krb5.conf
arquivo para fazer referência ao KDC comokdc = tcp/kdc.name.here
. Esse problema pode ocorrer se o PAC fizer com que o token seja muito grande para um datagrama UDP, mas forçar a comunicação com o KDC com TCP também é uma solução possível.Alterar esse valor para 1.000 usuários não é difícil para os administradores do AD, se resolver o seu problema.
fonte
Eu tive esse erro acontecendo em um site Drupal 7 no Safari no Mac e descobri que fechar as janelas do navegador e limpar o cache do navegador, sair do navegador, abri-lo novamente e recarregar a página funcionava para interromper o erro que só aconteceu desta vez.
fonte
Encontrei outra solução, embora não tenha certeza se realmente funciona. O Apache Docs declara que, para pacotes grandes, terei que definir LimitRequestFieldSize e / ou LimitRequestLine.
O problema é que, se você quiser definir o valor de LimitRequestLine para algo maior que 8 KB, precisará modificar a fonte e recompilar o Apache, pois 8 KB é o maxSize fixo ( http://httpd.apache.org/docs/ 2.2 / mod / core.html # limitrequestline ).
Não sei ao certo se esse método funciona, porque reinstalei o apache de nosso próprio repositório em um segundo servidor posteriormente. Parece que esta era uma versão de pacote diferente, pois o problema não ocorreu lá.
fonte
Caso alguém acerte esse problema com mod_proxy_ajp, observe: A partir de qual versão do Apache em diante o LimitRequestFieldSize não está mais codificado para 8k no máximo?
fonte