无法从Betfair WebAPI c#中检索会话密钥

时间:2017-04-24 20:35:15

标签: c# authentication x509certificate2 betfair

我一直在尝试使用these steps并使用此source code登录Betfair帐户。这工作正常,我返回一个会话密钥,但是如果我尝试重复步骤在另一个项目中获取会话密钥,我会收到一个" CERT_AUTH_REQUIRED"错误,暗示我的请求发送的客户端证书有问题。

Odder仍然,如果我创建另一个引用工作Betfair项目的项目并让这个新项目简单地在Betfair项目中运行Program.Main方法,我得到了" CERT_AUTH_REQUIRED"再次留言?

当Betfair应用程序是解决方案的Launch项目时它可以工作,但如果我设置第二个项目启动betfair控制台应用程序作为启动项目它不会返回成功响应(尽管代码运行正常并经历了所有相同的步骤,只是网络响应失败了。)

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:2)

我设法让代码适用于非交互式登录。我确实做了这个改变。听起来有点模糊,因为我记得有这个错误。

    private WebRequestHandler getWebRequestHandlerWithCert(string certFilename)
    {
        var cert = new X509Certificate2(certFilename, "", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
        var clientHandler = new WebRequestHandler();
        clientHandler.ClientCertificates.Add(cert);
        return clientHandler;
    }

答案 1 :(得分:0)

我刚刚发现的另一件事可能导致相同的错误,如果您在以下步骤中输入了导出密码。自从您创建密钥以来,情况可能已经改变,因为它将其标记为可导出,因此我不需要在代码中添加X509KeyStorageFlags.Exportable

openssl pkcs12 -export -in client-2048.crt -inkey client-2048.key -out client-2048.p12

我认为导出密码正是示例应用程序提示的密码,但并非如此,因此导出密码应留空。