Как CreateProcessAsUser в Windows, используя делегированные учетные данные из SSPI?

Я работаю в инфраструктуре входа в систему Kerberos (Single Sign-On) с:

  1. Клиент, прошедший проверку подлинности в распределении ключей Kerberos
    Центр.
  2. Основной сервисный сервер, использующий Kerberos в качестве аутентификации.

Серверная программа написана на C ++.

У меня нет проблем с созданием контекста между моим участником (клиентом) и участником службы (сервером).
Я также делегировал свои учетные данные клиента серверу, потому что мне нужно создать процесс на сервере с использованием учетных данных пользователя клиента.

И это моя проблема, на стороне сервера у меня есть контекст SSPI, и мне нужно CreateProcessAsUser, используя тип Windows pHandle,

Я не знаю, как использовать свои учетные данные SSPI для создания на моем сервере процесса в качестве пользователя клиента.

Я смотрю на LsaLogonUser, который, кажется, делает то, что я хочу (создать дескриптор из учетных данных пользователя Kerberos), но моя проблема та же, я не знаю, как использовать токен SSPI с этим LsaLogonUser.

Заранее спасибо за помощь

1

Решение

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

Ryyker

0

Другие решения

Я наконец нашел решение своей проблемы.

Лучший способ сделать это:

  1. записать делегированные учетные данные во временный файл.
  2. установите переменную среды KRB5CCNAME в путь к этому файлу.

Оно работает 😉

0