Saya diberitahu bahwa mungkin membuat aplikasi web yang tidak memerlukan login. Pengguna masuk ke Windows, yang mengautentikasi melalui Pencarian Direktori Aktif (LDAP). Kemudian, mereka harus bisa masuk ke webapp saya dan tidak pernah melihat prompt masuk. Pelanggan ini menyebut ini sebagai Single Sign On (mungkin salah dan bagian dari kebingungan saya).
Tapi, dari apa yang saya baca Single Sign On dari Tomcat docs adalah:
Single Sign On Valve digunakan ketika Anda ingin memberi pengguna kemampuan untuk masuk ke salah satu aplikasi web yang terkait dengan host virtual Anda , dan kemudian identitas mereka dikenali oleh semua aplikasi web lain pada host virtual yang sama.
Ini sangat jelas bagi saya. Pengguna harus login sekali dan dapat mengakses setiap webapp dengan instance tomcat. Tapi, yang perlu saya lakukan adalah membiarkan mereka masuk tanpa pernah memberikan kredensial ke server kucing jantan saya.
Jadi, agar ini berfungsi saya membayangkan:
- Pengguna membuat permintaan untuk beberapa halaman
- Server tidak melihat token sesi dan kemudian meminta klien untuk beberapa kredensial.
- Browser klien tanpa intervensi dari pengguna memberikan beberapa kredensial ke server.
- Kemudian, menggunakan kredensial yang disediakan oleh browser klien itu melakukan pencarian di LDAP.
Saya telah melihat beberapa contoh yang menggunakan sertifikat sisi klien ... khususnya sistem DoD PKI yang masuk akal bagi saya karena dalam kasus tersebut Anda mengonfigurasi Tomcat untuk meminta sertifikat sisi klien , tetapi hanya masuk ke windows Saya tidak melihat bagaimana ini akan berfungsi dan informasi apa yang browser akan sampaikan ke server dll. Apakah ini yang digunakan untuk NTLM?
Dalam lingkungan Windows Active Directory, Single Sign On digunakan untuk berarti mengunjungi halaman web internal yang membawa izin masuk Windows Anda dan server web dapat bertindak atasnya. Ini adalah sesuatu yang digunakan untuk NTLM, tetapi implementasi yang lebih baru menggunakan Kerberos sebagai gantinya.
Jika Anda membuka situs web Sharepoint Server, ia tahu siapa Anda tanpa perlu nama pengguna dan kata sandi masuk, tetapi ini hanya berfungsi untuk situs web internal di jaringan yang sama, saya rasa itu tidak masuk akal untuk bekerja di situs web publik. (Saya tidak tahu apakah maksud Anda "virtual host" seperti di vhost Apache atau di server yang di-hosting-kan-sumber).
Berikut ini adalah dokumen Microsoft yang menjelaskan cara kerja otentikasi Kerberos ke server web yang menjalankan IIS / ASP.Net: http://msdn.microsoft.com/en-us/library/ff647076.aspx
Tampaknya mungkin dilakukan dengan Apache / Tomcat / Java. Berikut ini adalah PDF yang menggambarkan implementasi Universitas UK tentang hal itu: http://gfivo.ncl.ac.uk/documents/UsingKerberosticketsfortrueSingleSignOn.pdf dan proyek Codeplex untuknya: http://tomcatspnosatcodeplex.com/ dan Openfire memiliki beberapa dokumentasi yang harus dilakukan dengan umumnya bekerja dengan Java / Kerberos di sini ( http://community.igniterealtime.org/docs/DOC-1060 ).
sumber
Kedengarannya seperti Anda menggambarkan apa yang disebut Microsoft sebagai Otentikasi Windows Terpadu.
Sepertinya Tomcat mendukung Otentikasi Windows, berdasarkan artikel ini .
sumber
Sebagai permulaan, Anda tidak dapat menghindari login. Jika Anda ingin mengidentifikasi pengguna, Anda harus membuatnya masuk. Lupakan NTLM, Kerberos datang untuk menyelamatkan - ini dapat melakukan segalanya dengan cara yang sepenuhnya transparan.
SingleSignOnValve bukan yang Anda cari. Jika Anda menggunakan Tomcat 7, Anda dapat menggunakan SpnegoAuthenticator segera tetapi pada 6 Anda harus menggunakan ini .
sumber