在一个上升的BizTalk 2010项目中,我们将拥有一个客户调用以提交数据的Web服务,以及客户调用以请求数据的Web服务。在biztalk应用程序级别,这将通过将业务流程公开为wcf服务来实现。
在服务器级别,我们将拥有一个2节点Web场,一个2节点biztalk组和一个sql集群。 Web服务显然将部署在Web场中,编排,发送/接收端口将在BizTalk组服务器上运行。
我们希望对呼叫者进行身份验证并将其身份映射到活动目录帐户,这样在业务流程级别,我们就能够访问呼叫者的AD身份,并将帐户名称传递给存储过程。数据库中。
据推测,我们可以通过SSL证书处理身份映射,但我们之前没有这样做过。那里有一些很好的样本/教程吗?
答案 0 :(得分: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方名称。这与活动目录帐户没有直接链接。