Поддержка Kerberos ограниченного делегирования с использованием GSSAPI для многопроцессорных - PullRequest
0 голосов
/ 24 сентября 2018

Я задал похожий вопрос о том, как поддерживать ограниченное делегирование Kerberos для многопроцессорной обработки с использованием SSPI, и получил отличный ответ: поддержка ограниченного делегирования Kerberos с использованием SSPI для многопроцессорной обработки

Поскольку наш сервернеобходимо поддерживать несколько платформ (Windows, Linux, MacOS), мы также должны поддерживать их с помощью GSSAPI.

Опять же, здесь есть справочная информация: наш C ++ HTTP-сервер имеет главный процесс и рабочий процесс.Оба процесса выполняются на одном компьютере и используют одну и ту же учетную запись службы, и каждый клиентский запрос может поступать от разных пользователей.Главный процесс может обрабатывать аутентификацию SPNEGO и Kerberos с использованием gss_acquire_cred и gss_accept_sec_context, но он не знает, какой ресурс ему нужно делегировать, только знания рабочего процесса.Как мы можем переслать клиенту контекст полномочий / безопасности, чтобы работник мог выполнить делегирование?

Опять-таки, одно менее безопасное решение: в мастере, после успешного завершения gss_accept_sec_context, вызовите gss_display_name для получения клиентаUPN (имя участника-пользователя);передача UPN от мастера к работнику;в рабочем вызовите gss_acquire_cred_impersonate_name с UPN, чтобы получить делегированный дескриптор учетных данных, затем вызовите gss_init_sec_context с делегированным дескриптором учетных данных.Однако, поскольку UPN очень легко подделать, мы хотели бы избежать этого решения, если это возможно.

Другой способ сделать ограниченное делегирование с использованием GSSAPI: вызовите gss_acquire_cred с GSS_C_BOTH, затем вызовите gss_accept_sec_context, чтобы получить делегированный дескриптор учетных данных., затем вызовите gss_init_sec_context с делегированным дескриптором учетных данных.Это должно хорошо работать, если существует только один процесс, но я не уверен, какие дополнительные шаги необходимо выполнить для двух процессов.

Любое предложение приветствуется.

...