2

我試圖跨域進行單向目錄同步(不信任)。理想情況下,我想使用現有的同步框架,如Microsoft Sync Framework 2.1,但無法弄清楚如何正確設置身份驗證。我想我需要使用NTLM傳遞身份驗證(描述爲here),但初始測試未顯示成功。同步框架 - 跨域的文件同步

我工作過的代碼看起來與此類似(基於關閉MSDN樣品):

SafeTokenHandle safeTokenHandle; 
bool returnValue = LogonUser("xfrtest", ".", "password", 8, 2, out safeTokenHandle); 
using (WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle())) 
{ 
    using (WindowsImpersonationContext ctx = newId.Impersonate()) 
    { 
     sourceProvider = new FileSyncProvider(
      sourceReplicaRootPath, filter, options); 
     destinationProvider = new FileSyncProvider(
      destinationReplicaRootPath, filter, options); 

        SyncOrchestrator agent = new SyncOrchestrator(); 
     agent.LocalProvider = sourceProvider; 
     agent.RemoteProvider = destinationProvider; 
     agent.Direction = SyncDirectionOrder.Upload; 

     sourceProvider.DetectChanges(); 
     destinationProvider.DetectChanges(); 

     var results = agent.Synchronize(); 
    } 
} 

我有「xfrtest」帳戶設置在本地使用相同的密碼兩臺機器。登錄對源系統(我也在運行該代碼)起作用,但在目標上失敗。

所以問題是......首先,是否可以使用Sync Framework來完成此操作?如果是這樣,我是否通過了傳遞錯誤?如果不是,那麼有什麼好的選擇建議?

回答

0

事實證明,這段代碼實際上工作。我的問題是我測試的非生產域名具有信任,導致Windows無法回退到NTLM傳遞身份驗證。當我設置沒有信任域或非域名的域時,這是有效的。