2015-06-09 1 views
1

Привет, Как олицетворять Nservicebus. Я использую версию Nservicebus 5.2.Как олицетворять Nservicebus

Я вижу некоторый код для старой версии, но который недоступен в новой версии. Есть ли у нас образец, демонстрирующий выдачу себя в версии 5.2.

Configure.With() 
     .StructureMapBuilder() 
     .Sagas() 
     .RunTimeoutManager() 
     .UnicastBus() 
      .ImpersonateSender(false) 

В Новой версии нет никакого способа установить

ImpersonateSender

Кто-нибудь знает, как передать точный currentprincipal объект до конечных точек?

Я попытался запустить свою конечную точку ниже командной строки. Start NServiceBus.Host.exe /displayName:"myservice" /username:"mydomain\myname" /password:"mypwd"

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

public void Customize(BusConfiguration configuration) 
     { 


      configuration.UsePersistence<RavenDBPersistence>() 

      Console.WriteLine("-------------------NAME--------------\n"); 
      Console.WriteLine(WindowsIdentity.GetCurrent().Name); 
      Console.WriteLine("-------------------NAME--------------\n"); 


      Console.WriteLine("-------------------NAME--------------\n"); 
      Console.WriteLine(Thread.CurrentPrincipal.Identity.Name); 
      Console.WriteLine("-------------------NAME--------------\n"); 
     } 

выход приходит как: ------------------- ИМЯ --------------

MYNetworkDomain \ MyMachineLoggedInNTId ------------------- ИМЯ --------------

-------- ----------- ИМЯ --------------

------------------- ИМЯ --------------

+0

Я хочу выполнить один звонок с олицетворением окон. Я могу задать претензии, учетные данные Windows в заголовке всего исходящего сообщения. Затем можно получить его и из входящего сообщения и установить Thread.CurrentPrincipal –

+0

Как выполнить сохраненное сообщение на определенном объекте WindowsIdentity. Есть ли способ воссоздать windowsidentity.currentprincipal из заголовка входящего сообщения? Мой сценарий: в первый раз, когда я запускаю Saga с включенной проверкой подлинности Windows, он запрашивает у меня мои учетные данные, я добавляю несколько разных учетных данных (другой домен \ пользователь), который не является моим идентификатором Windows NT. Затем Saga отправляет команду. Конечная точка выполняется на тех же учетных данных, когда я выполняю идентификацию. Однако в ситуации, когда Saga разбивается, и я повторно запускаю проект, тогда все сообщения отправляются на конечную точку и работают с моим WindowsNTId и не работают. –

+0

Я пробовал запустить эту конечную точку с командной строкой ниже, но при отладке кода он принимает мои учетные данные NT. 'Start NServiceBus.Host.exe/displayName:« MyEndpoint »/ имя пользователя:« MYDomain \ MyUserName »/ пароль:« MyPassword »' –

ответ

0

Олицетворение в .Net может га есть много вкусов и, возможно, не ведет себя так, как вы могли ожидать. В версии v4, когда значение .ImpersonateSender(...) установлено в true, поведение должно было доставляться вместе с сообщением, используя заголовок сообщения, имя идентификации, используемое в конечной точке отправителя, получатель использовал бы заголовок входящего сообщения для настройки нового generic identity.

Это не настоящее олицетворение, не говоря уже о том, что олицетворение для работы на разных машинах требует, чтобы делегация была настроена со всеми проблемами безопасности, которые делегация приносит в таблицу. Не говоря уже о том, что AFAIK, олицетворение Windows Identity не может быть выполнено на уровне потока, маркер безопасности присоединяется к процессу и не может быть перезаписан потоком, притворяющимся другим пользователем.

Это говорит о том, что ничто не мешает вам создавать свою собственную логику для доставки удостоверений вместе с сообщениями, чтобы иметь инфраструктуру инфраструктуры идентификации/основной инфраструктуры .Net, как вам нравится, и иметь возможность выполнять проверки безопасности через инфраструктуру Role.