Фон
В проекте, над которым я работаю, у нас есть приложения с графическим интерфейсом, работающие на нескольких разных серверах.Из-за их сходства в пользовательском интерфейсе я изучаю возможность объединения их OMI в единый унифицированный интерфейс.В настоящее время все эти приложения доступны для удаленного просмотра через VNC.Я планирую воспользоваться этим, заставив главный дисплей запустить несколько средств просмотра VNC под одеялом и обернуть интерфейс вокруг этих сеансов VNC, чтобы они выглядели как собственные приложения.
Проблема
Яищу указатели для разработки единого решения для входа.Я хочу исключить индивидуальный вход каждого приложения и вместо этого позволить пользователям входить только в унифицированный дисплей.Когда они это сделают, они автоматически войдут в каждое из отдельных приложений.
Ограничения
- Все приложения являются Java-приложениями на основе Swing, работающими в Linux.
- Аутентификация выполняется на компьютере под управлением Windows 2003 Server с Active Directory.
- Я бы настоятельно предпочел готовое решение по сравнению с пользовательским.
Идеи
Мое расследование направило меня к Kerberos и GSSAPI .Механизм, основанный на билете Kerberos, кажется, хорошо подходит для этой задачи.
Хитрость в том, что эти приложения всегда работают.Мне нужен унифицированный дисплей, чтобы как-то «сказать» им, когда пользователь вошел в систему. Это не похоже на обычные программы Kerberized, где они выполняют вход в Kerberos при запуске.
Если я использую Kerberos, я не уверен, какпередавать билеты на различные серверы приложений.Есть ли стандартный способ их передачи?Я просто использую "scp" или что-то?Или я разработал свой собственный сетевой протокол на основе сокетов, чтобы Java-программы соединялись друг с другом и передавали билеты таким образом?
Хотя я не хочу слишком увязать в деталях.Я был бы признателен даже за такие общие идеи, как "Вы рассматривали технологию X?"или «попробуйте XYZ вместо VNC, он сделает это за вас».
Обновления
Я буду редактировать ответы и разъяснения здесь ...
Рассматривали ли вы, что некоторая аутентификация должна выполняться в любом случае и что VNC только экспортирует представление в работающую программу, поэтому сеанс VNC не может транспортировать билеты?
Да, действительно.Java + VNC - это то, что мы имеем сейчас.Я мог бы заменить VNC на что-то другое, если есть лучший способ удаленного просмотра приложений.Не переписывая их, то есть.Идеальным решением было бы разделить их на отдельные части клиента и сервера и поместить весь код GUI в клиент, но это 5-звездочная сложность, и мне нужно 1- или 2-звездочную.
ЕстьВы рассматривали случай, когда два пользователя входят в систему одновременно?Увидят ли они одно и то же приложение?Или это будет запрещено?
Да, я обдумал это.Они либо увидят то же приложение, либо это будет запрещено.Любое решение подходит для этой конкретной системы, так что это не имеет большого значения.
Рассматривали ли вы просто использование X-сервера на локальном хосте и экспорт окон клиентских приложений?
Да, это было бы здорово.Можно ли это сделать с помощью уже запущенных приложений?Я должен подключиться к этим приложениям после того, как они уже запущены.Я не могу запустить их по требованию, когда кто-то запускает центральную программу просмотра.