единый вход (SSO) для веб-приложений (используемый через браузер) хорошо задокументирован и установлен. Установить SSO для полнофункциональных клиентов сложнее, и обычно предлагается на основе билетов Kerberos, в частности, с использованием входа Windows в ActiveDirectory в домене.
Однако я ищу более общее решение для следующего: мне нужно установить "настоящий" SSO (один идентификатор для всех приложений, т.е. не просто синхронизация паролей между приложениями), где на стороне клиента (неуправляемые компьютеры, в т.ч. не-Windows), «конечными клиентами» являются приложение Java и приложение GTK+. Оба взаимодействуют со своими серверными аналогами, используя протокол на основе HTTP (скажем, WebServices через HTTPS). Клиенты и сервер не обязательно находятся в одной и той же локальной сети или интрасети, но клиент может получить доступ к серверам из экстрасети. Серверная часть всех приложений находится в одной и той же сетевой области, и компонент SSO может получить доступ к поставщику удостоверений через LDAP.
Мой вопрос в основном "как я могу это сделать"? В частности,
а) существует ли согласованный механизм безопасного и защищенного «хранилища сеансов SSO» на стороне клиента, как в случае с файлами cookie SSO для приложений, доступ к которым осуществляется через браузер? Возможно, что-то вроде эмуляции Kerberos (TGT?) или даже прямого повторного использования его, даже если на стороне клиента не выполнялась аутентификация ActiveDirectory?
б) существуют ли какие-либо протоколы/API/фреймворки для связи между богатыми клиентами и другими участниками SSO (как в случае с файлами cookie)?
c) существуют ли какие-либо API/фреймворки для передачи TGT и сеансовых билетов, подобных kerberos, по сети?
d) есть ли какие-либо примеры реализации/учебники, демонстрирующие, как выполнять SSO для полнофункционального клиента?
Я так понимаю, что есть "заполняющие" агенты, которые учатся вводить учетные данные в диалоги приложения на стороне клиента. Я бы предпочел не использовать такого «помощника», если это возможно.
Также, если возможно, я хотел бы использовать CAS, Shibboleth и другие компоненты с открытым исходным кодом, где это возможно.
Спасибо за комментарии, предложения и ответы!
МиКу