2010-05-17 3 views
4

На клиенте я имею установку автобус с ImpersonateSender(true)NServiceBus - Как настроить шину, чтобы WindowsIdentity течь от клиента

Мой сервер сконфигурирован AsA_Server, который по умолчанию должен иметь ImpersonateSender(true)

я теперь пытаясь получить WindowsIdentity, изнутри обработчика

var windowsIdentity = WindowsIdentity.GetCurrent(true); 

Но это дает мне null.

Что я делаю неправильно?

ответ

6

Вместо этого используйте System.Threading.Thread.CurrentPrincipal.

Кроме того, не устанавливайте ImpersonateSender на клиенте - он будет отправлять свои учетные данные независимо.

+0

Я смотрел на это, но это только дает мне GenericPrincipal. Мне нужно получить WindowsIdentity, чтобы я мог получить токен Windows для пользователя. –

+0

Решение проблемы по-другому: http://stackoverflow.com/questions/2854198/nservicebus-how-to-pass-custom-headers-in-the-message-envelop –

+1

Внутри CurrentPrincipal есть IIdentity, который может быть отличным от WindowsIdentity. –