SignalRを使用してクライアントに通知する予定です。
本番環境では、クライアントx509証明書を使用して、リバースプロキシを使用してクライアントを認証する必要があります。また、IISWebサーバーに接続する前にSSLを終了します。
これは機能しますか?
クライアント証明書を追加したり、WebRequestHandlerを使用したりするためのAPIが見つかりません。
私が最初になることはできません。
/ HAXEN
SignalRを使用してクライアントに通知する予定です。
本番環境では、クライアントx509証明書を使用して、リバースプロキシを使用してクライアントを認証する必要があります。また、IISWebサーバーに接続する前にSSLを終了します。
これは機能しますか?
クライアント証明書を追加したり、WebRequestHandlerを使用したりするためのAPIが見つかりません。
私が最初になることはできません。
/ HAXEN
クライアントベースの証明書の使用に関して: SingalR にはそれを可能にするものは何もありません。これが私が見つけたハックです:
public class MyHttpClient: IHttpClient
{
DefaultHttpClient _client = new DefaultHttpClient();
X509Certificate Certificate;
Action<IRequest> SpiceAction(Action<IRequest> prepareRequest)
{
return new Action<IRequest>(req =>
{
var fi = typeof(HttpWebRequestWrapper).GetField("_request",
BindingFlags.NonPublic | BindingFlags.Instance);
HttpWebRequest request = (HttpWebRequest) fi.GetValue(req);
request.ClientCertificates.Add(Certificate);
prepareRequest(req);
});
}
public Task<IResponse> Get(string url, Action<IRequest> prepareRequest)
{
return _client.Get(url, SpiceAction(prepareRequest));
}
public Task<IResponse> Post(string url, Action<IRequest> prepareRequest,
IDictionary<string, string> postData)
{
return _client.Post(url, SpiceAction(prepareRequest), postData);
}
}
そして、代わりに:
var conn = new Connection("https://xxxxxxxx");
conn.Start()
行う:
var conn = new Connection("https://xxxxxxxx");
conn.Start(new MyHttpClient() { Certificate = xxxxxxx });
これで、バージョン 1.1 の SignalR クライアント証明書がそのままサポートされます。
すごい!