3

SignalRを使用してクライアントに通知する予定です。

本番環境では、クライアントx509証明書を使用して、リバースプロキシを使用してクライアントを認証する必要があります。また、IISWebサーバーに接続する前にSSLを終了します。

これは機能しますか?

クライアント証明書を追加したり、WebRequestHandlerを使用したりするためのAPIが見つかりません。

私が最初になることはできません。

/ HAXEN

4

2 に答える 2

2

クライアントベースの証明書の使用に関して: 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 });
于 2013-04-10T22:14:14.343 に答える
1

これで、バージョン 1.1 の SignalR クライアント証明書がそのままサポートされます。

すごい!

于 2013-04-12T07:13:28.587 に答える