Saya menyiapkan SSO untuk pengguna Direktori Aktif melalui situs web yang berjalan di Apache (Apache2 pada SLES 11.1), dan ketika menguji dengan Firefox semuanya bekerja dengan baik. Tetapi ketika saya mencoba membuka situs web di Internet Explorer 8 (Windows 7), yang saya dapatkan hanyalah
"Permintaan yang buruk
Browser Anda mengirim permintaan yang tidak dapat dimengerti server ini.
Ukuran bidang tajuk permintaan melebihi batas server.
Otorisasi: Negosiasi [string sangat panjang] "
Vhost.cfg saya terlihat seperti ini:
<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>
Saya juga memastikan bahwa cookie dihapus dan mencoba beberapa nilai yang lebih kecil untuk LimitRequestFieldSize dan LimitRequestLine.
Hal lain yang tampaknya aneh bagi saya adalah bahwa bahkan dengan debug LogLevel saya tidak akan mendapatkan log tentang ini. Baris terakhir log adalah
ssl_engine_kernel.c(1879): OpenSSL: Write: SSL negotiation finished successfully
Adakah yang punya ide tentang itu?
Jawaban:
Perasaan saya mengatakan Anda memiliki token keamanan yang sangat besar, mungkin karena pengguna adalah anggota dari sejumlah besar grup. Implementasi AD Kerberos akan memberikan Apache dengan Privilege Attribute Certificate (PAC) secara default. Struktur ini bisa besar jika pengguna adalah anggota dari sejumlah besar kelompok. Anda dapat menggunakan
tokensz.exe
alat ini untuk melihat ukuran token pengguna.Jika ini masalahnya, Anda dapat memodifikasi atribut UserAccountControl dari akun pengguna untuk mencegah PAC dikirim.
Anda mungkin dapat mengubah
/etc/krb5.conf
file Anda untuk merujuk KDC sebagaikdc = tcp/kdc.name.here
. Masalah ini dapat terjadi jika PAC menyebabkan token terlalu besar untuk datagram UDP, tetapi memaksa komunikasi ke KDC dengan TCP juga merupakan solusi yang mungkin.Mengubah nilai itu pada 1.000 pengguna tidak sulit untuk admin AD Anda jika itu memecahkan masalah Anda.
sumber
Saya mengalami kesalahan ini terjadi pada situs Drupal 7 di Safari pada Mac dan menemukan bahwa menutup jendela peramban dan membersihkan cache peramban, keluar dari peramban, membukanya kembali dan memuat ulang laman berfungsi untuk menghentikan kesalahan yang hanya terjadi kali ini.
sumber
Saya menemukan solusi lain, meskipun saya tidak yakin apakah itu benar-benar berfungsi. Apache Docs menyatakan bahwa untuk paket besar saya harus mengatur LimitRequestFieldSize dan / atau LimitRequestLine.
Masalahnya adalah bahwa jika Anda ingin mengatur nilai LimitRequestLine menjadi lebih tinggi dari 8KB maka Anda harus memodifikasi sumber dan mengkompilasi ulang Apache, karena 8KB adalah maxSize tetap ( http://httpd.apache.org/docs/ 2.2 / mod / core.html # limitrequestline ).
Saya tidak tahu pasti apakah metode ini berfungsi, karena saya menginstal ulang apache dari repositori kami sendiri di server kedua nanti. Tampaknya ini adalah versi paket yang berbeda karena masalahnya tidak terjadi di sana.
sumber
Jika ada yang menemukan masalah ini dengan mod_proxy_ajp, lihatlah: Dari mana versi Apache selanjutnya adalah LimitRequestFieldSize tidak lagi hardcoded ke 8k max?
sumber