Единый вход в Java / VNC - PullRequest
       48

Единый вход в Java / VNC

9 голосов
/ 21 января 2011

Фон

В проекте, над которым я работаю, у нас есть приложения с графическим интерфейсом, работающие на нескольких разных серверах.Из-за их сходства в пользовательском интерфейсе я изучаю возможность объединения их OMI в единый унифицированный интерфейс.В настоящее время все эти приложения доступны для удаленного просмотра через VNC.Я планирую воспользоваться этим, заставив главный дисплей запустить несколько средств просмотра VNC под одеялом и обернуть интерфейс вокруг этих сеансов VNC, чтобы они выглядели как собственные приложения.

Проблема

Яищу указатели для разработки единого решения для входа.Я хочу исключить индивидуальный вход каждого приложения и вместо этого позволить пользователям входить только в унифицированный дисплей.Когда они это сделают, они автоматически войдут в каждое из отдельных приложений.

Ограничения

  1. Все приложения являются Java-приложениями на основе Swing, работающими в Linux.
  2. Аутентификация выполняется на компьютере под управлением Windows 2003 Server с Active Directory.
  3. Я бы настоятельно предпочел готовое решение по сравнению с пользовательским.

Идеи

Мое расследование направило меня к Kerberos и GSSAPI .Механизм, основанный на билете Kerberos, кажется, хорошо подходит для этой задачи.

Хитрость в том, что эти приложения всегда работают.Мне нужен унифицированный дисплей, чтобы как-то «сказать» им, когда пользователь вошел в систему. Это не похоже на обычные программы Kerberized, где они выполняют вход в Kerberos при запуске.

Если я использую Kerberos, я не уверен, какпередавать билеты на различные серверы приложений.Есть ли стандартный способ их передачи?Я просто использую "scp" или что-то?Или я разработал свой собственный сетевой протокол на основе сокетов, чтобы Java-программы соединялись друг с другом и передавали билеты таким образом?

Хотя я не хочу слишком увязать в деталях.Я был бы признателен даже за такие общие идеи, как "Вы рассматривали технологию X?"или «попробуйте XYZ вместо VNC, он сделает это за вас».


Обновления

Я буду редактировать ответы и разъяснения здесь ...

Рассматривали ли вы, что некоторая аутентификация должна выполняться в любом случае и что VNC только экспортирует представление в работающую программу, поэтому сеанс VNC не может транспортировать билеты?

Да, действительно.Java + VNC - это то, что мы имеем сейчас.Я мог бы заменить VNC на что-то другое, если есть лучший способ удаленного просмотра приложений.Не переписывая их, то есть.Идеальным решением было бы разделить их на отдельные части клиента и сервера и поместить весь код GUI в клиент, но это 5-звездочная сложность, и мне нужно 1- или 2-звездочную.

ЕстьВы рассматривали случай, когда два пользователя входят в систему одновременно?Увидят ли они одно и то же приложение?Или это будет запрещено?

Да, я обдумал это.Они либо увидят то же приложение, либо это будет запрещено.Любое решение подходит для этой конкретной системы, так что это не имеет большого значения.

Рассматривали ли вы просто использование X-сервера на локальном хосте и экспорт окон клиентских приложений?

Да, это было бы здорово.Можно ли это сделать с помощью уже запущенных приложений?Я должен подключиться к этим приложениям после того, как они уже запущены.Я не могу запустить их по требованию, когда кто-то запускает центральную программу просмотра.

Ответы [ 2 ]

3 голосов
/ 29 января 2011

RealVNC Enterprise Edition поддерживает аутентификацию AD (~ $ 50 за экспортированный рабочий стол). Возможно, вы можете просто позволить людям авторизоваться в приложениях таким способом. FreeNX поддерживает аутентификацию PAM, так что вы можете взломать что-нибудь вместе с winbind, особенно если ваш linux dist упрощает настройку AD.

И последнее, что запускает ваши приложения в VirtualBox , который может работать в режиме без головы через RDP. Вы можете аутентифицироваться против PAM и таким образом winbind. Это также имеет преимущество в том, что на стороне клиента поддерживается Windows через удаленный рабочий стол, который предварительно установлен или доступен для Windows.

2 голосов
/ 21 января 2011

Окей, я постараюсь начать этот список. Рассматривали ли вы ...

  • JAAS? Должен включать GSS API, но он был очень громоздким в последний раз, когда я его пробовал.
  • что некоторая аутентификация должна выполняться в любом случае и что VNC только экспортирует представление в работающую программу, поэтому сеанс VNC не может транспортировать билеты?
  • браузерное решение со встроенным клиентом Java VNC? По крайней мере, IE может выполнять аутентификацию Kerberos, я не знаю о других браузерах, или КАК IE это делает.
  • случай, когда два пользователя входят в систему одновременно? Увидят ли они одно и то же приложение? Или это будет запрещено?
  • просто использовать X-сервер на локальном хосте и экспортировать окна приложений клиента?

РЕДАКТИРОВАТЬ: Дополнительные соображения:

  • При использовании варианта X Server используйте Xmove для перемещения программ на X Server.
  • Вы можете использовать аутентификацию SSH с закрытыми / секретными ключами и позволить пользователю вводить одну фразу-пароль для подключения всех ваших серверов. Агент SSH - это ключевое слово.
  • С существующими SSH-соединениями запустите XMove на всех машинах, соберите все графические интерфейсы и отправьте их клиенту. Вы могли бы даже написать небольшое MainWindow с кнопками для каждого приложения, и при нажатии экспортировать только одно из приложений, поэтому кажется, что они были запущены из основного графического интерфейса.
...