У нас есть Rest API, который требует аутентификации сертификата клиента. API используется этой коллекцией скриптов Python, которые может запускать пользователь. Чтобы пользователю не приходилось вводить свой пароль для своего клиентского сертификата при каждом запуске одного из сценариев, мы создали этот процесс посредника в Java, который пользователь может запускать и запускать в фоновом режиме, который содержит пароль сертификата пользователя в памяти (у нас просто установлено свойство javax.net.ssl.keyStorePassword в JVM). Сценарии связываются с этим процессом, и процесс просто перенаправляет вызовы API Rest на сервер (добавляя учетные данные сертификата).
Чтобы выполнить IPC между сценариями и процессом брокера, мы просто используем сокет. Проблема заключается в том, что сокет создает угрозу безопасности, поскольку кто-то может использовать API Rest с помощью сертификата другого человека, связываясь через порт процесса посредника на компьютере другого человека. Мы несколько снизили риск, используя безопасность java, чтобы разрешить подключения к порту только с localhost. Я думаю, что кто-то в теории все еще может сделать это, подключившись к машине удаленно, а затем используя порт. Есть ли способ еще больше ограничить использование порта для текущего пользователя Windows? Или, может быть, есть другая форма IPC, которую я мог бы использовать для авторизации с использованием текущего пользователя Windows?
Мы используем Java для процесса брокера только потому, что все в нашей команде гораздо лучше знакомы с Java, чем с python, но его можно переписать на python, если это поможет.
Редактировать: Только что вспомнил, другая причина использования java для процесса брокера заключается в том, что мы застряли с использованием python v2.6, и в этой версии https с сертификатами клиентов не поддерживается ( по крайней мере, без использования сторонней библиотеки).