0

在即将推出的 BizTalk 2010 项目中,我们将有一个客户端调用以提交数据的 Web 服务,以及一个客户端调用以请求数据的 Web 服务。在 biztalk 应用程序级别,这将通过将编排公开为 wcf 服务来实现。

在服务器级别,我们将有一个 2 节点网络场、一个 2 节点 biztalk 组和一个 sql 集群。Web 服务显然将部署在 Web 场上,并且编排、发送/接收端口将在 BizTalk 组服务器上运行。

我们希望对调用者进行身份验证并将其身份映射到活动目录帐户,以便在编排级别,我们能够访问调用者的 AD 身份,并将帐户名称传递给数据库中的存储过程。

大概我们可以通过 SSL 证书处理身份映射,但我们以前没有这样做过。那里有一些好的示例/教程吗?

4

1 回答 1

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 方名称。不过,这与活动目录帐户没有直接联系。

于 2012-12-28T23:35:47.507 回答