2012-09-11 55 views
0

在一個upcomming的BizTalk 2010項目中,我們將有一個客戶端調用來提交數據的Web服務以及客戶端調用來請求數據的Web服務。在biztalk應用程序級別,這將通過將業務流程公開爲wcf服務來實現。BizTalk:呼叫者身份驗證

在服務器級別,我們將有一個2節點Web場,2節點biztalk組和一個sql羣集。 Web服務顯然將部署在Web場上,並且編排,發送/接收端口將在BizTalk組服務器上運行。

我們希望驗證呼叫者並將其身份映射到活動目錄帳戶,以便在編排級別,我們可以訪問調用者的AD身份,並將帳戶名稱傳遞給存儲過程一個數據庫。

大概我們可以通過SSL證書處理身份映射,但我們之前沒有這樣做。那裏有一些很好的樣本/教程嗎?

+0

我會考慮利用Windows Identity Framework來執行基於聲明的身份。雖然我從來沒有專門用BizTalk來做這件事,但在AD級別處理身份並不是BizTalk的強項。 –

回答

0

如果添加端點行爲以將WindowsIdentity中的名稱添加到WCF標頭,該怎麼辦?這樣(至少在我的情況下),身份更容易進入管道,但這足以滿足您的「帳戶名稱」的目的嗎?

#region IDispatchMessageInspector Members 

public object AfterReceiveRequest(
    ref System.ServiceModel.Channels.Message request, 
    System.ServiceModel.IClientChannel channel, 
    System.ServiceModel.InstanceContext instanceContext) 
{ 
    if (ServiceSecurityContext.Current == null || 
     ServiceSecurityContext.Current.WindowsIdentity == null) 
     return null; 

    WindowsUserName windowsUserName = new WindowsUserName(); 
    request.Headers.Add(MessageHeader.CreateHeader(
     windowsUserName.Name, windowsUserName.Namespace, 
     ServiceSecurityContext.Current.WindowsIdentity.Name)); 
    return null; 
} 

public void BeforeSendReply(ref Message reply, object correlationState) 
{ 
    return; 
} 

#endregion 

同樣使用客戶證書,但是使用PrimaryIdentity代替WindowsIdentity獲得的BizTalk方名稱實際上適用。儘管如此,這與活動目錄帳戶沒有直接聯繫。

相關問題