Service Fabric使用Wcf客户端连接到安全集群

时间:2017-05-23 14:40:54

标签: c# wcf azure azure-service-fabric

我无法与安全结构集群建立Wcf连接。由于sotn的建议收集日志后,问题是一个简单的TCP端点未找到异常(TCP代码10060)。端点肯定存在(结构正在解析它,我只提供命名服务),当我检查集群设置时,端口实际上是打开的。因此,我认为必须要有安全保障。但是,使用相同的凭据,我可以为群集创建结构客户端。

群集使用x509证书进行保护。我正在尝试创建一个wcf客户端,可以从部署了Wcf服务的集群外部的VM使用。我按照指南here进行了设置,并here

string serverCertThumb = "xxx";
string clientCertThumg = "xxx";
string commonName = "mycluster.southcentralus.cloudapp.azure.com";
string connection = " mycluster.southcentralus.cloudapp.azure.com:19000";

var xc = GetCredentials(clientCertThumg, serverCertThumb, commonName);
var resolver = new ServicePartitionResolver(xc, connection);
var myFactory = new WcfCommunicationClientFactory<IData>(WcfUtility.CreateTcpListenerBinding(), null,
    resolver, null, null);
var client = myFactory.CreateClient(new System.Uri("fabric:/MyServicePath"));

static X509Credentials GetCredentials(string clientCertThumb, string serverCertThumb, string name)
{
    X509Credentials xc = new X509Credentials();
    xc.StoreLocation = StoreLocation.CurrentUser;
    xc.StoreName = "My";
    xc.FindType = X509FindType.FindByThumbprint;
    xc.FindValue = clientCertThumb;
    xc.RemoteCommonNames.Add(name);
    xc.RemoteCertThumbprints.Add(serverCertThumb);
    xc.ProtectionLevel = ProtectionLevel.EncryptAndSign;
    return xc;
}

0 个答案:

没有答案