Мне сказали, что можно создать веб-приложение, которое не требует входа в систему. Пользователь входит в Windows, которая аутентифицируется через поиск в Active Directory (LDAP). Затем они должны иметь возможность зайти в мое веб-приложение и никогда не видеть приглашение для входа в систему. Эти клиенты называют это единой регистрацией (возможно, это неправильно и является частью моей путаницы).
Но из того, что я прочитал, единый вход в документы Tomcat:
Клапан единого входа используется, когда вы хотите дать пользователям возможность войти в любое из веб-приложений, связанных с вашим виртуальным хостом , и затем их идентификационные данные распознаются всеми другими веб-приложениями на том же виртуальном хосте.
Это совершенно ясно для меня. Пользователь должен войти в систему один раз и может получить доступ к каждому веб-приложению на экземпляре Tomcat. Но мне нужно как-то разрешить им войти, не предоставляя никаких учетных данных моему серверу Tomcat.
Итак, чтобы это работало, я представляю:
- Пользователь делает запрос на какую-то страницу
- Сервер не видит токен сеанса, а затем запрашивает у клиента учетные данные.
- Клиентский браузер без какого-либо вмешательства со стороны пользователя предоставляет некоторые учетные данные серверу.
- Затем, используя эти учетные данные, предоставленные клиентским браузером, он выполняет поиск в LDAP.
Я видел несколько примеров, в которых используются сертификаты на стороне клиента ... в частности, система DoD PKI, которая имеет какой-то смысл для меня, потому что в этих случаях вы настраиваете Tomcat для запроса сертификатов на стороне клиента , но просто заходите в окна. Я не вижу, как это будет работать и какую информацию браузер будет передавать на сервер и т. д. Для этого используется NTLM?
В среде Windows Active Directory единый вход в систему означает, что посещение внутренней веб-страницы несет ваши права входа в Windows, и веб-сервер может на них воздействовать. Это то, для чего используется NTLM, но в новых реализациях вместо этого используется Kerberos.
Если вы открываете веб-сайт сервера Sharepoint Server, он знает, кто вы, не требуя имени пользователя и пароля для входа, но это работает только для внутренних веб-сайтов в той же сети, я не думаю, что для него имеет смысл работать на общедоступном веб-сайте. (Я не могу сказать, имеете ли вы в виду «виртуальный хост», как в Apache vhost или как на стороннем размещенном сервере).
Вот документ Microsoft, описывающий, как аутентификация Kerberos работает на веб-сервере под управлением IIS / ASP.Net: http://msdn.microsoft.com/en-us/library/ff647076.aspx
Это выглядит возможно сделать с Apache / Tomcat / Java. Вот PDF-файл, описывающий реализацию этого в британском университете: http://gfivo.ncl.ac.uk/documents/UsingKerberosticketsfortrueSingleSignOn.pdf и проект Codeplex для него: http://tomcatspnego.codeplex.com/ и Openfire имеют некоторые документация, касающаяся общей работы с Java / Kerberos, здесь ( http://community.igniterealtime.org/docs/DOC-1060 ).
источник
Похоже, вы описываете то, что Microsoft называет интегрированной аутентификацией Windows.
Похоже, что Tomcat поддерживает аутентификацию Windows, основанную на этой статье .
источник
Для начала, вы не можете избежать входа в систему. Если вы хотите идентифицировать пользователей, вы должны иметь их логин. Забудьте о NTLM, на помощь придет Kerberos - он может делать все абсолютно прозрачным образом.
SingleSignOnValve - это не то, что вы ищете. Если вы используете Tomcat 7, вы можете использовать SpnegoAuthenticator сразу, но на 6 вы должны использовать это .
источник