2015-06-09 87 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 ------------------- NAME --------------

-------- -----------名稱--------------

------------------- NAME --------------

+0

我想用windows模擬運行一個調用。我可以在所有外發郵件的標題中設置聲明,Windows憑據。然後是否可以從傳入的消息中獲取它並設置Thread.CurrentPrincipal –

+0

如何在某些windowsIdentity上執行存儲的消息。有沒有什麼辦法從傳入的郵件頭重新創建windowsidentity.currentprincipal?我的情景:第一次當我運行帶有windows認證的佐賀時,它向我要求我的憑證,我把一些不是我的Windows NT id的不同憑據(不同的域\用戶)。然後,當我執行identity.impersonate時,Saga發送命令Endpoint在同一憑證上執行。但是,在Saga崩潰並重新運行項目的情況下,所有消息都將轉到終端,並且正在使用我的windowsNTId運行並失敗。 –

+0

我試圖用下面的命令行來運行END點,但是仍然在調試代碼時使用了我的計算機的NT id憑據。啓動NServiceBus.Host.exe/displayName:「MyEndpoint」/用戶名:「MYDomain \ MyUserName」/密碼:「MyPassword」 –

回答

0

.Net中的冒充可以有許多口味,可能不會像你所期望的那樣行事。 在第4版中,當.ImpersonateSender(...)設置爲true時,行爲是使用消息頭和發件人端點使用的身份名稱一起傳遞消息,收件人將使用傳入消息頭設置新的generic identity

這不是一個真正的模仿,更不用說在不同的機器上工作的模擬需要設置委派,並且委託給表格帶來的所有安全問題。更不用說,AFAIK,Windows Identity模擬不能在線程級別完成,安全令牌附加到進程並且不能被假冒爲不同用戶的線程覆蓋。

也就是說,沒有什麼能夠阻止您建立自己的邏輯來傳遞身份以及消息,以便根據自己的喜好設置.Net身份/主體基礎架構並能夠通過Role基礎架構執行安全檢查。