Реализация делегирования kerberos в сервисе с драйверами ODBC - PullRequest
0 голосов
/ 15 февраля 2011

Я пытаюсь расширить службу Windows, которую я написал, чтобы принять билет Kerberos от клиента, а затем передать этот билет драйверу ODBC, чтобы он мог подключиться к другому серверу с ним.

Драйвер ODBC прекрасно работает с аутентификацией Kerberos в автономном сценарии. То есть он может просто запросить и переслать тикет для текущего пользователя. Но в моем сервисе я могу иметь дело с несколькими пользователями одновременно. Как принять билет, чтобы при подключении к драйверу ODBC он обнаруживал и использовал правильный билет пользователя?

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

(Примечание: мой сервис написан на C / C ++ с Win32 API)

1 Ответ

0 голосов
/ 25 февраля 2011

Я нашел ответ на свой вопрос.

После аутентификации в контексте безопасности я могу использовать функцию ImpersonateSecurityContext. Это приведет к запуску текущего потока в качестве клиента, который инициировал контекст безопасности. Из этого потока я могу вызвать функции подключения для драйвера ODBC, и он будет аутентифицирован как правильный пользователь.

http://msdn.microsoft.com/en-us/library/aa375497%28v=vs.85%29.aspx

...